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