29 lines
770 B
Java
Executable File
29 lines
770 B
Java
Executable File
package midend.llvm.instr;
|
|
|
|
import midend.llvm.type.IrInterType;
|
|
import midend.llvm.value.IrValue;
|
|
import backend.mips.Register;
|
|
import backend.mips.instr.fake.MipsLi;
|
|
import backend.mips.instr.MipsSyscall;
|
|
|
|
public class PutChInstr extends IrInstr {
|
|
public PutChInstr(String name, IrValue putValue) {
|
|
super(IrInterType.VOID, name, IrInstrType.IO);
|
|
addUse(putValue);
|
|
}
|
|
|
|
public String toString() {
|
|
return "call void @putch(i32 " + getUses().get(0).getName() + ")";
|
|
}
|
|
|
|
public static String putChDecl() {
|
|
return "declare void @putch(i32)";
|
|
}
|
|
|
|
public void toMips() {
|
|
loadValueToReg(getUse(0), Register.A0);
|
|
new MipsLi(Register.V0, 11);
|
|
new MipsSyscall();
|
|
}
|
|
}
|