PSEUDOCODE COMMENTS

1 if op == pre-increment ++ 2 parse operand recursively level13() 3 if operand is not an lvalue 4 issue "must be an lvalue" 5 return <request no fetch> 6 generate rINC1 on operand in memory step() 7 return <request no fetch> 8 if op == pre-decrement -- 9 parse operand recursively level13() 10 if operand is not an lvalue 11 issue "must be an lvalue" 12 return <request no fetch> 13 generate rDEC1 on operand in memory step() 14 return <request no fetch> 15 if op == one's complement ~ 16 parse operand recursively level13() 17 if operand is an lvalue 18 FETCH OPERAND INTO PRIMARY 19 generate COM1 20 pass ~is[CV] 21 pass zero stage address is[SA] 22 return <request no fetch> 23 if op == logical not ! 24 parse operand recursively level13() 25 if operand is an lvalue 26 FETCH OPERAND INTO PRIMARY 27 generate LNEG1 28 pass !is[CV] 29 pass zero stage address is[SA] 30 return <request no fetch> 31 if op == unary minus - 32 parse operand recursively level13() 33 if operand is an lvalue 34 FETCH OPERAND INTO PRIMARY 35 generate ANEG1 36 pass -is[CV] 37 pass zero stage address is[SA] 38 return <request no fetch> 39 if op == indirection * 40 parse operand recursively level13() 41 if operand is an lvalue 42 FETCH OPERAND INTO PRIMARY 43 if operand is symbolic 44 pass indirect data type from symbol table is[TI] 45 else pass indirect data type integer is[TI] 46 pass zero stage address is[SA] 47 pass <not address> is[TA] 48 pass <not constant> is[TC] 49 pass <do not fetch if function call> is[CV] 50 return <request fetch> 51 if op == sizeof sizeof() 52 bypass and remember ( 53 default size to 0 54 if "unsigned" set size to 2 55 if "int" set size to 2 56 else if "char" set size to 1 57 if size != 0 and "char *" set size to 2 58 if size == 0 and symbol and in symbol table 59 fetch size from symbol table 60 else if size = 0 issue "must be object or type" 61 bypass ) if there was a ( 62 pass <integer constant> is[TC] 63 pass size as <constant value> is[CV] 64 pass <not address> is[TA] 65 pass <not indirect fetch> is[TI] 66 pass <not in symbol table> is[ST] 67 return <request no fetch> 68 if op == address & 69 parse operand recursively level13() 70 if operand is not an lvalue 71 issue "illegal address" 72 return <request no fetch> 73 pass address data type from symbol table is[TA] 74 if indirect object reference 75 return <request no fetch> 76 generate POINT1m 77 pass indirect data type from symbol table is[TI] 78 return <request no fetch> 79 parse operand at higher precedence level level14() 80 if op == post increment ++ 81 if operand is not an lvalue 82 issue "must be an lvalue" 83 return <request no fetch> 84 generate rINC1 step() 85 generate rDEC1 86 return <request no fetch> 87 if op == post decrement -- 88 if operand is not an lvalue 89 issue "must be an lvalue" 90 return <request no fetch> 91 generate rDEC1 step() 92 generate rINC1 93 return <request no fetch> 94 return <fetch request status from below>