Log In
9 votes

State whether the following statements are True or False with reasons for your answer:

  1. Coroutine is just another name for a subroutine.
  2. A two pass assembler uses its machine opcode table in the first pass of assembly.
in Compiler Design
edited by

Subroutine will always starts its execution from the beginning(first line) but a co-routine will start from where it left last time.

This is why we say, co-routine has multiple entry points whereas sub-routine has only one.

Yield 'remembers' where the co-routine is so when it is called again it will continue where it left off.

For example:

  coroutine foo {
    yield 1;
    yield 2;
    yield 3;
  print foo();
  print foo();
  print foo();

Prints: 1 2 3

Note: Coroutines may use a return, and behave just like a subroutine

  coroutine foo {
    return 1;
    return 2; //Dead code
    return 3;
  print foo();
  print foo();
  print foo();

Prints: 1 1 1

Source - Stack Overflow

4 Answers

8 votes
  1. True
    Subroutine are special cases of coroutine. Coroutine are generalized form of subroutine which is nonpreemptive multitasking
  2. True. Basically machine opcode table is the symbol table which requires in 1st pass of two pass assembler

edited by
symbol table is created in first pass and it is used in second pass, (b) should be false
@srestha if coroutines are generalized form then can we say it is just another name of subroutine?It seems from your definition that coroutines can have multiples things and one of them is subroutine.So i think first is false
@ Arjun sir Please check it . I think that (b) is False.

@srestha i think 2nd statement is false


no @Sonam check these lines

scan the code twice. The first time, just count how long the machine code instructions will be, just to find out the addresses of all the labels. Also, create a table that has a list of all the addresses and where they will be in the program. This table is known as the symbol table.

This para also suggests that B is false right?

In pass 1, using Pseudo Opcode, POT is consulted for processing some pseudo opcode like DS, DC, START, END, etc 

@srestha read this. I think for part b answer is correct but explanation is wrong. Symbol table and opcode table are different.


for part b -In question MOT(machine opcode table)  is asked and Not symbol table ….It is used in both the passes hence true.

for pass 1 – it is used to get length of mnemonics and modify location counter.

for pass 2- it is used to obtain respective  machine code .




Note-symbol table  and Literal table is created in first pass and it is used in second pass


2 votes

A. TRUE: A subroutine and a function are essentially the same thing, with one difference: A function returns some sort of value (usually via the stack or CPU register), while a subroutine does not. Whether subroutine or function, it is a block of executable code, having exactly one point of entry. A co-routine is also a block of executable code, and, just like a subroutine, it has one point of entry. However, it also has one or more points of re-entry.



0 votes
a) False

b) True
0 votes
A is true

B is False

Related questions

15 votes
2 answers
State whether the following statements are True or False with reasons for your answer A subroutine cannot always be used to replace a macro in an assembly language program. A symbol declared as ‘external’ in an assembly language program is assigned an address outside the program by the assembler itself.
asked Oct 6, 2014 in Compiler Design Kathleen 1.2k views
30 votes
2 answers
The pass numbers for each of the following activities object code generation literals added to literal table listing printed address resolution of local symbols that occur in a two pass assembler respectively are $1, 2, 1, 2$ $2, 1, 2, 1$ $2, 1, 1, 2$ $1, 2, 2, 2$
asked Oct 9, 2014 in Compiler Design Kathleen 6.4k views
14 votes
4 answers
A grammar $G$ is in Chomsky-Normal Form (CNF) if all its productions are of the form $A \to BC$ or $A \to a$, where $A,B$ and $C$, are non-terminals and $a$ is a terminal. Suppose $G$ is a CFG in CNF and $w$ is a string in $L(G)$ of length $n$, then how long is a derivation of $w$ in $G$?
asked Oct 6, 2014 in Compiler Design Kathleen 2.4k views
22 votes
4 answers
Match the following items ...
asked Oct 4, 2014 in Compiler Design Kathleen 2.3k views