mips without optimize
This commit is contained in:
68
midend/llvm/instr/StoreInstr.java
Normal file → Executable file
68
midend/llvm/instr/StoreInstr.java
Normal file → Executable file
@@ -1,25 +1,43 @@
|
||||
package midend.llvm.instr;
|
||||
|
||||
import midend.llvm.value.IrValue;
|
||||
import midend.llvm.type.IrInterType;
|
||||
|
||||
public class StoreInstr extends IrInstr {
|
||||
public StoreInstr(IrValue value, IrValue pointer) {
|
||||
super(IrInterType.VOID, "store", IrInstrType.STORE);
|
||||
addUse(value);
|
||||
addUse(pointer);
|
||||
}
|
||||
|
||||
public IrValue getValue() {
|
||||
return getUse(0);
|
||||
}
|
||||
|
||||
public IrValue getPointer() {
|
||||
return getUse(1);
|
||||
}
|
||||
|
||||
public String toString() {
|
||||
return getName() + " " + getValue().getType() + " " + getValue().getName()
|
||||
+ ", " + getPointer().getType() + " " + getPointer().getName();
|
||||
}
|
||||
}
|
||||
package midend.llvm.instr;
|
||||
|
||||
import midend.llvm.value.IrValue;
|
||||
import backend.mips.MipsBuilder;
|
||||
import backend.mips.Register;
|
||||
import midend.llvm.type.IrInterType;
|
||||
import backend.mips.instr.MipsLs;
|
||||
import backend.mips.instr.type.MipsLsType;
|
||||
|
||||
public class StoreInstr extends IrInstr {
|
||||
public StoreInstr(IrValue value, IrValue pointer) {
|
||||
super(IrInterType.VOID, "store", IrInstrType.STORE);
|
||||
addUse(value);
|
||||
addUse(pointer);
|
||||
}
|
||||
|
||||
public IrValue getValue() {
|
||||
return getUse(0);
|
||||
}
|
||||
|
||||
public IrValue getPointer() {
|
||||
return getUse(1);
|
||||
}
|
||||
|
||||
public String toString() {
|
||||
return getName() + " " + getValue().getType() + " " + getValue().getName()
|
||||
+ ", " + getPointer().getType() + " " + getPointer().getName();
|
||||
}
|
||||
|
||||
public void toMips() {
|
||||
Register valueReg = MipsBuilder.getRegister(getValue());
|
||||
if (valueReg == null) {
|
||||
valueReg = Register.K0;
|
||||
}
|
||||
loadValueToReg(getValue(), valueReg);
|
||||
Register pointerReg = MipsBuilder.getRegister(getPointer());
|
||||
if (pointerReg == null) {
|
||||
pointerReg = Register.K1;
|
||||
}
|
||||
loadValueToReg(getPointer(), pointerReg);
|
||||
new MipsLs(MipsLsType.SW, valueReg, pointerReg, 0);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user