X-Git-Url: http://wien.tomnetworks.com/gitweb/?p=uebersetzerbau-ss10.git;a=blobdiff_plain;f=gesamt_arm%2Fchelper.c;fp=gesamt_arm%2Fchelper.c;h=ee419220f21d8918c7b4aab2ff93cf049473020d;hp=2e736ea421618c08867b07b598b27cfdbbf2d615;hb=b9ffbf367b39d7786ca493cc0b755e43e084b0e0;hpb=67902869dbe033c80351a8e5d07bf55ed91b6c34 diff --git a/gesamt_arm/chelper.c b/gesamt_arm/chelper.c index 2e736ea..ee41922 100644 --- a/gesamt_arm/chelper.c +++ b/gesamt_arm/chelper.c @@ -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("\t@ vars: %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("\tbx lr\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]; }