Fixed IndexExpr
This commit is contained in:
@@ -547,8 +547,12 @@ public class CodeGenImpl extends CodeGenBase
|
||||
}
|
||||
else
|
||||
{
|
||||
backend.emitSW(reg, Register.FP, -sp_off*wordSize, "Store value to b stored");
|
||||
incSp(1);
|
||||
Register ret = target.dispatch(this);
|
||||
backend.emitSW(T1, ret, 0, "Set list element");
|
||||
sp_off--;
|
||||
backend.emitLW(reg, Register.FP, -sp_off*wordSize, "Load value to b stored");
|
||||
backend.emitSW(reg, ret, 0, "Set list element");
|
||||
}
|
||||
}
|
||||
//}
|
||||
@@ -1139,8 +1143,9 @@ public class CodeGenImpl extends CodeGenBase
|
||||
backend.emitADDI(index, index, 4, "Compute list element offset in words");
|
||||
backend.emitLI(temp, wordSize, "Word size in bytes");
|
||||
backend.emitMUL(index, index, temp, "Compute list element offset in bytes");
|
||||
backend.emitADD(index, vacantReg, index, "Pointer to list element");
|
||||
backend.emitLW(Register.A0, index, 0, "Set list element");
|
||||
backend.emitADD(vacantReg, vacantReg, index, "Pointer to list element");
|
||||
backend.emitMV(temp,vacantReg,"Copy Result");
|
||||
backend.emitLW(A0, vacantReg, 0, "Load list element");
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -1165,10 +1170,11 @@ public class CodeGenImpl extends CodeGenBase
|
||||
backend.emitLI(T1, 1, "str size");
|
||||
backend.emitSW(T1, vacantReg, 3*wordSize, "len");
|
||||
backend.emitSW(T0, vacantReg, 4*wordSize, "ch");
|
||||
backend.emitMV(temp,vacantReg,"Copy Result");
|
||||
}
|
||||
freeRegister(tmpHandle);
|
||||
-- sp_off;
|
||||
return vacantReg;
|
||||
return temp;
|
||||
}
|
||||
|
||||
public Register analyze(MemberExpr node)
|
||||
|
||||
Reference in New Issue
Block a user