arm: first working example
[uebersetzerbau-ss10.git] / gesamt_arm / chelper.c
index 2e736ea421618c08867b07b598b27cfdbbf2d615..ee419220f21d8918c7b4aab2ff93cf049473020d 100644 (file)
@@ -9,7 +9,7 @@
 #endif
 
 #define REGLEN 5
-static char *regsppc[] = {"14", "15", "16", "17", "18"};
+static char *regsppc[] = {"r10", "r11", "r12", "r13", "r14"};
 
 /* ja, dirty.. */
 static char *akt_func_name = (char*) NULL;
@@ -17,8 +17,8 @@ static char need_stack = 0;
 
 void func_header(char *s, int vars, int parms, int call)
 {
-       printf("\t.globl %1$s\n\t.type %1$s, @function\n%1$s:\n", s);
-       printf("\t#vars: %i, parms: %i, call(bool): %i\n", vars, parms, call);
+       printf("\t.globl %1$s\n\t.type %1$s, %%function\n%1$s:\n", s);
+       printf("\tvars: %i, parms: %i, call(bool): %i\n", vars, parms, call);
        akt_func_name = s;
 
        need_stack = (vars || parms) && call;
@@ -43,14 +43,14 @@ void func_footer(void)
                /* restore link register */
                printf("\tlwz 0,-8(1); mtlr 0\n");
        }
-       printf("\tblr\n\n\n");
+       printf("\tblr\n\n\n");
 }
 
 void move(char *src, char *dst)
 {
        if(src == (char*) NULL) return;
        if(strcmp(src,dst) != 0) {
-               printf("\tmr %s,%s\n", dst, src);
+               printf("\tmov %s,%s\n", dst, src);
        }
 }
 
@@ -91,7 +91,7 @@ char *reg_64to8l(char *s)
 
 char *param_reg(int num)
 {
-       char *regs[] = {"3", "4", "5", "6", "7", "8", "9", "10"};
+       char *regs[] = {"r0", "r1", "r2", "r3", "r4", "r5", "r6", "r7", "r8", "r9"};
        return regs[num];
 }