# HG changeset patch # User kono # Date 1085198403 -32400 # Node ID 3e8ba7024d2535fb73ad554f01719e78a1596b84 # Parent 5b50813d0c455f7c04c2521101ae8581ae8b3255 MIPS struct fix (all test except 2 passed.) diff -r 5b50813d0c45 -r 3e8ba7024d25 Changes --- a/Changes Sat May 22 00:57:50 2004 +0900 +++ b/Changes Sat May 22 13:00:03 2004 +0900 @@ -4388,3 +4388,8 @@ slt/beq ってのが、うまく動いてないみたいね。 + +Sat May 22 12:49:55 JST 2004 + +なんか構造体の先頭はレジスタに置くみたいね... いいけど。 +$5,$6,$7 か。 diff -r 5b50813d0c45 -r 3e8ba7024d25 mc-code-mips.c --- a/mc-code-mips.c Sat May 22 00:57:50 2004 +0900 +++ b/mc-code-mips.c Sat May 22 13:00:03 2004 +0900 @@ -1541,39 +1541,37 @@ free_register(dreg); } -static int -struct_push(int e4,int t,int arg) +int +struct_push(int e4,int t,int arg) { int length,count; int dreg,sreg; char *drn,*crn,*srn; g_expr(e4); if (!is_int_reg(creg)) error(-1); - length=size(t); + length=size(t); if(length%SIZE_OF_INT) { - length += SIZE_OF_INT - (length%SIZE_OF_INT); + length += SIZE_OF_INT - (length%SIZE_OF_INT); } dreg = get_register(); if (!dreg) error(-1); drn = register_name(dreg); crn = register_name(creg); if (length