(→Compiling and Running) |
(→Postfix Code) |
||
Line 13: | Line 13: | ||
The Postfix code for the above function is as follows: | The Postfix code for the above function is as follows: | ||
− | + | {{CollapsedCode|Postfix code| | |
<asm> | <asm> | ||
;--- declaring the string literal | ;--- declaring the string literal | ||
Line 33: | Line 33: | ||
ENTER 0 | ENTER 0 | ||
− | + | ADDR a | |
+ | LOAD | ||
EXTRN prints | EXTRN prints | ||
CALL prints | CALL prints | ||
Line 43: | Line 44: | ||
RET | RET | ||
</asm> | </asm> | ||
+ | }} | ||
== Compiling and Running == | == Compiling and Running == |
Consider the following S9 function:
<c> string a = "batata"; int s9() -> 0 {
a!
} </c>
The Postfix code for the above function is as follows:
Postfix code |
---|
<asm>
RODATA ALIGN LABEL _L123 ;; automatic label STR "batata"
DATA ALIGN LABEL a ID _L123 ;; automatic label
TEXT ALIGN GLOBL _main, FUNC LABEL _main ENTER 0 ADDR a LOAD EXTRN prints CALL prints TRASH 4 INT 0 POP LEAVE RET </asm> |
To test the first example, the S9 compilation process is as follows:
s9 batata.s9 yasm -felf batata.asm ld -o batata batata.o -lrts
To test the second program directly, pf2asm can be used:
pf2asm batata.pf yasm -felf batata.asm ld -o batata batata.o -lrts