Mercurial > hg > CbC > old > device
diff mc-code-ia32.c @ 355:6188f66c0c0b arg_scope
cond op, and arg scope.
author | kono |
---|---|
date | Sun, 04 Jul 2004 19:08:42 +0900 |
parents | 41ed77cb9c67 |
children | f3f2b7906d50 |
line wrap: on
line diff
--- a/mc-code-ia32.c Sat Jul 03 14:40:30 2004 +0900 +++ b/mc-code-ia32.c Sun Jul 04 19:08:42 2004 +0900 @@ -233,6 +233,7 @@ #define __const const\n\ #define __THORW\n\ #define __attribute__(a)\n\ +#define __inline__\n\ #define wchar_t int\n\ #define __GNUC__ 2\n\ "; @@ -1336,43 +1337,15 @@ printf("\tjmp *%s\n",register_name(e2,0)); } -int -code_rindirect(int e1, int reg,int offset, int sign) +void +code_rindirect(int e1, int reg,int offset, int sign,int byte) { char *crn,*op; - int byte; g_expr(e1); - byte = 0; op="movl"; + op=cload(sign,byte); crn = register_name(creg,0); use_int(reg); printf("\t%s %d(%s),%s\n",op,offset,crn,register_name(reg,0)); - return sign?INT:UNSIGNED; -} - -int -code_crindirect(int e1, int reg,int offset, int sign) -{ - char *crn,*op; - int byte; - g_expr(e1); - byte = 0; op=sign?"movsbl":"movzbl"; - crn = register_name(creg,0); - use_int(reg); - printf("\t%s %d(%s),%s\n",op,offset,crn,register_name(reg,0)); - return sign?CHAR:UCHAR; -} - -int -code_srindirect(int e1, int reg,int offset, int sign) -{ - char *crn,*op; - int byte; - g_expr(e1); - byte = 0; op=sign?"movswl":"movzwl"; - crn = register_name(creg,0); - use_int(reg); - printf("\t%s %d(%s),%s\n",op,offset,crn,register_name(reg,0)); - return sign?SHORT:USHORT; } #if FLOAT_CODE @@ -1687,16 +1660,13 @@ void ld_indexx(int byte, int n, int xreg,int reg,int sign) { - char *op; - use_int(reg); - op = byte ? (sign?"movsbl":"movzbl") : "movl"; if (n) - printf("\t%s %d(%s),%s\n",op,n, - register_name(xreg,0),register_name(reg,byte)); + printf("\t%s %d(%s),%s\n",cload(sign,byte),n, + register_name(xreg,0),register_name(reg,0)); else - printf("\t%s (%s),%s\n",op, - register_name(xreg,0),register_name(reg,byte)); + printf("\t%s (%s),%s\n",cload(sign,byte), + register_name(xreg,0),register_name(reg,0)); } int