Mercurial > hg > CbC > old > device
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);