main:
AND R0, R0, #0
ADD R0, R0, #2 ; The compiler assigns variable a an offset of 3
STR R0, R6, #3 ; inLocal = 2;
AND R0, R0, #0
ADD R0, R0, #3 ; inGlobal assigned to offset 0 in the global area
STR R0, R5, #0 ; inGlobal = 3;
LDR R0, R6, #3 ; get value of inLocal : r0 contains original value
ADD R1, R0, #1 ; increment inLocal
STR R1, R6, #3 ; inLocal++
LDR R1, R5, #0 ; get value of inGlobal
NOT R1 ; ~inGlobal
AND R2, R0, R1 ; calculate inLocal & ~inGlobal
STR R2, R6, #4 ; outLocalA = inLocal++ & ~inGlobal;
; The variable outLocalA is assigned an offset of 4
LDR R0, R6, #3 ; get value of inLocal
LDR R1, R5, #0 ; get value of inGlobal
ADD R0, R0, R1 ; calculate inLocal + inGlobal
LDR R2, R6, #3 ; get value of inLocal
LDR R3, R5, #0 ; get value of inGlobal
NOT R3
ADD R3, R3, #1 ; calculate -inGlobal
ADD R2, R2, R3 ; calculate inLocal - inGlobal
NOT R2
ADD R2, R2, #1 ; calculate -(inLocal - inGlobal)
ADD R0, R0, R2 ; (inLocal + inGlobal) - (inLocal - inGlobal)
STR R0, R6, #5 ; outLocalB = (inLocal + inGlobal) - (inLocal - inGlobal);
; The variable outLocalB is assigned an offset of 5
:
:
<code for calling the function printf>
:
: