예제 #1
0
		private IntelInstruction CreatePush(IntelRegister reg)
		{
            IntelInstruction inst = new IntelInstruction(
                Opcode.push,
                reg.DataType,
                reg.DataType,
                new RegisterOperand(reg));
			return inst;
		}
예제 #2
0
 private void RewritePush(IntelRegister reg)
 {
     RewritePush(instrCur.dataWidth, orw.AluRegister(reg));
 }
예제 #3
0
		private IntelInstruction CreateMov(IntelRegister regDst, IntelRegister regSrc)
		{
            IntelInstruction inst = new IntelInstruction(
                Opcode.mov,
                PrimitiveType.Word16,
                PrimitiveType.Word16,
                new RegisterOperand(regDst),
                new RegisterOperand(regSrc));
			return inst;
		}
예제 #4
0
 private Identifier Reg(IntelRegister r)
 {
     return new Identifier(r.Name, r.DataType, r);
 }
예제 #5
0
 private void EmitPop(IntelRegister reg)
 {
     RewritePop(orw.AluRegister(reg), instrCur.dataWidth);
 }
예제 #6
0
 public Identifier AluRegister(IntelRegister reg, PrimitiveType vt)
 {
     return frame.EnsureRegister(reg.GetPart(vt));
 }
예제 #7
0
 public void Add(IntelRegister reg, int constant)
 {
     ProcessBinop(
         0x00,
         new ParsedOperand(new RegisterOperand(reg)),
         new ParsedOperand(new ImmediateOperand(X86Assembler.IntegralConstant(constant))));
 }
예제 #8
0
 public Identifier AluRegister(IntelRegister reg, PrimitiveType vt)
 {
     return(frame.EnsureRegister(reg.GetPart(vt)));
 }
예제 #9
0
 private void Given_RegValue(IntelRegister reg, uint value)
 {
     emu.WriteRegister(reg, value);
 }
예제 #10
0
 private void EmitPop(IntelRegister reg)
 {
     RewritePop(orw.AluRegister(reg), instrCur.dataWidth);
 }
예제 #11
0
 private void RewritePush(IntelRegister reg)
 {
     RewritePush(instrCur.dataWidth, orw.AluRegister(reg));
 }
예제 #12
0
 private ParsedOperand Reg(IntelRegister reg)
 {
     return new ParsedOperand(new RegisterOperand(reg));
 }