Code Generation/Example 2: Difference between revisions

From Wiki**3

< Code Generation
Line 4: Line 4:


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

Revision as of 07:31, 25 May 2009

The Original Code

Consider the following S9 function:

<c> string a = "batata"; 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 _L123  ;; automatic label

--- 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>