changeset 26:85b8648de04f

*** empty log message ***
author kono
date Thu, 06 Feb 2003 22:48:27 +0900
parents b7a94557bf92
children af0c69eaa433
files Idea mc-nop-386.c
diffstat 2 files changed, 17 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/Idea	Wed Feb 05 02:34:28 2003 +0900
+++ b/Idea	Thu Feb 06 22:48:27 2003 +0900
@@ -1313,4 +1313,13 @@
 
 
 
+Thu Feb  6 11:47:03 JST 2003
 
+Code Segement を単位として使うときに、大域変数はどういう
+ように分けるの? static なんかは意味ないよね。
+
+もちろん、自然にグループ分けされるわけだけど。
+
+あとデータフローだよね。データフローに関しては、
+あんまりやってないなぁ
+
--- a/mc-nop-386.c	Wed Feb 05 02:34:28 2003 +0900
+++ b/mc-nop-386.c	Thu Feb 06 22:48:27 2003 +0900
@@ -52,7 +52,8 @@
 /* static void st_indexx(int byte, int n, int xreg); */
 static void string(int e1);
 static void tosop(int op);
-void div_cleanup(char *orn);
+static void div_cleanup(char *orn);
+static void use_register(int virt, int real, int move);
 
 extern int cadr(int e);
 extern int car(int e);
@@ -232,6 +233,7 @@
 	free_register(reg_stack[--reg_sp]);
     }
     text_mode();
+    use_register(creg,REG_EAX,0);
 }
 
 void 
@@ -851,9 +853,14 @@
 	g_expr(e2);
     }
 
+    /* we don't have to save creg nor dreg */
+    regs[creg]=0;
+    regs[dreg]=0;
     use_register(creg,REG_EAX,0);
     use_register(dreg,REG_EDX,0);  /* will be destroyed */
     use_register(save,REG_ECX,0);  /* will be destroyed */
+    regs[creg]=1;
+    regs[dreg]=1;
 
     if (car(e2) == FNAME) {	
 	printf("\tcall\t%s\n",n->nm);