Difference between revisions of "Code Generation/Example 2"

From Wiki**3

< Code Generation
(New page: == The Original Code == Consider the following S9 function: <c> string a = "ola"; int s9() -> 0 { a! } </c> == Postfix Code == The Postfix code for the above func...)
 
Line 18: Line 18:
 
RODATA
 
RODATA
 
ALIGN
 
ALIGN
LABEL zum ;; deveria ser automático
+
LABEL _L123 ;; automatic label
 
STR "ola"
 
STR "ola"
 
;--- declaring the global variable "a"
 
;--- declaring the global variable "a"
Line 32: Line 32:
 
LABEL _main
 
LABEL _main
 
ENTER 0
 
ENTER 0
ADDRV a
+
 
 +
ADDRV a   ;; ADDRV = ADDR+LOAD
 
EXTRN prints
 
EXTRN prints
 
CALL prints
 
CALL prints
 
TRASH 4
 
TRASH 4
 +
 
INT 0
 
INT 0
 
POP
 
POP

Revision as of 09:30, 25 May 2009

The Original Code

Consider the following S9 function:

<c> string a = "ola"; int s9() -> 0 {

     a!

} </c>

Postfix Code

The Postfix code for the above function is as follows:

<asm>

--- declaring the string literal

RODATA ALIGN LABEL _L123  ;; automatic label STR "ola"

--- declaring the global variable "a"

DATA ALIGN LABEL a ID zum  ;; deveria ser automático

--- this is the main function (note that "s9" translates to RTS's "_main")

TEXT ALIGN GLOBL _main, FUNC LABEL _main ENTER 0

ADDRV a  ;; ADDRV = ADDR+LOAD EXTRN prints CALL prints TRASH 4

INT 0 POP LEAVE RET </asm>