Fri, 1 Feb 2013, 00:40
A student writes: > Dear Prof. Patt, > > I have a short question regarding to lab 1. > > It is mentioned in the lab 1 assignment that: > > Note: your assembler needs to recognize only labels as operands for LEA, BR, > and JSR instructions. For example, if the following line is in an input >assembly language program, your assembler can exit with error code 4: > > LEA R1, x100 > > However, I get confused in the following situation: > > LEA R1, x1H0 or LEA R1, #1S0 or LEA R1, 100 > > In the above cases, the second operand "looks like" numbers, but > either do not follow the format exactly or have invalid digits. Should > we consider them as "undefined label" and exit with error code 1, or > still can consider them as numbers, and return with error code 4? > > Thanks sincerely, > <<name withheld to protect the student struggling with undefined vs ill-formed>> A few students have asked about this, so I think it is worth responding to all of you. Undefined is not the same as ill-formed (aka illegal). Undefined label: =============== An undefined label is a label used in an instruction which is not tied to the address of a memory location somewhere in the program. For example, ... LEA, R1 HOUSE HOUSE ADD R1, R1, #2 ... is cool (as far as the assembly process is concerned, but .ORIG x9000 LEA R1, HOUSE .END is not cool because the location HOUSE has not been specified. i.e., the address HOUSE is not defined. Ergo HOUSE is an undefined label. By the way, what will the "cool" two line segment above do? Cool, as in correct assembly language. Not clear how useful the actual code will be. Illegal (or, ill-formed) label: ============================== An illegal label, or an ill-formed label is a label that violates the constraints we have made on labels. These constraints are necessary to make sure every symbol is uniquely identifiable. Computers do not tolerate ambiguity. For example, ... LEA, R1 ADD ADD ADD R1, R1, #2 ... is an illegal label because one can not use opcodes as labels. The Assembly Language document lists all symbols that have other meanings and therefore can not be used as labels. The industry generally refers to the set of all such symbols as "reserved words," and makes the statement: Reserved words can not be used as labels. Finally, one could write the following horrific code: .ORIG x3000 JSR ADD .END ADD is not only an illegal label, it is undefined. What error message do you report? Answer: Whichever of two you wish. Either will receive full credit. Hope this helps. Good luck finishing the lab on time. Yale Patt