コード例 #1
0
ファイル: Emit.cs プロジェクト: SplittyDev/Imardin2
 public static void instr(Instruction instr, TargetRegister op1, TargetRegister op2)
 {
     BuildInstruction (instr);
     BuildLengthPrefix (LengthPrefix.f_reg | LengthPrefix.s_reg);
     BuildRegister (op1);
     BuildRegister (op2);
 }
コード例 #2
0
ファイル: Emit.cs プロジェクト: SplittyDev/Imardin2
 public static void instr(Instruction instr, TargetRegister op1, byte op2)
 {
     BuildInstruction (instr);
     BuildLengthPrefix (LengthPrefix.f_reg | LengthPrefix.s_8);
     BuildRegister (op1);
     bitstream.Write (op2 & 0xFF);
 }
コード例 #3
0
ファイル: Emit.cs プロジェクト: SplittyDev/Imardin2
 public static void instr(Instruction instr, TargetRegister op1, Int32 op2)
 {
     if (CPU.GetRegisterWidth (op1) < RegisterWidth.DWord)
         throw new Exception ("Can't fit 32-bit value into 16-bit or 8-bit register!");
     BuildInstruction (instr);
     BuildLengthPrefix (LengthPrefix.f_reg | LengthPrefix.s_32);
     BuildRegister (op1);
     bitstream.Write (op2 & 0x7FFFFFFF);
 }
コード例 #4
0
ファイル: CPU.cs プロジェクト: SplittyDev/Imardin2
 public static RegisterWidth GetRegisterWidth(TargetRegister reg)
 {
     if (reg >= TargetRegister.eax && reg <= TargetRegister.edi)
         return RegisterWidth.DWord;
     else if (reg >= TargetRegister.ax && reg <= TargetRegister.dx)
         return RegisterWidth.LowWord;
     else if (reg >= TargetRegister.ah && reg <= TargetRegister.dh)
         return RegisterWidth.HighByte;
     else if (reg >= TargetRegister.al && reg <= TargetRegister.dl)
         return RegisterWidth.LowByte;
     throw new Exception (string.Format ("Invalid register: {0}", reg));
 }
コード例 #5
0
ファイル: Emit.cs プロジェクト: SplittyDev/Imardin2
 public static void BuildRegister(TargetRegister reg)
 {
     bitstream.Write ((byte)((byte)reg & 0xFF));
 }
コード例 #6
0
ファイル: Register32.cs プロジェクト: SplittyDev/Imardin2
 public Register32(TargetRegister name, uint value)
     : this(name)
 {
     Value = value;
 }
コード例 #7
0
ファイル: Register32.cs プロジェクト: SplittyDev/Imardin2
 public Register32(TargetRegister name)
     : this(Enum.GetName (typeof(TargetRegister), name))
 {
 }
コード例 #8
0
ファイル: CPU.cs プロジェクト: SplittyDev/Imardin2
 public Register8L TranslateLowByte(TargetRegister reg)
 {
     foreach (var reg32 in Registers) {
         if (reg32.LowByte.Name == Enum.GetName (typeof (TargetRegister), reg))
             return reg32.LowByte;
     }
     throw new Exception (string.Format ("Invalid register: {0}", reg));
 }
コード例 #9
0
ファイル: CPU.cs プロジェクト: SplittyDev/Imardin2
 public Register32 TranslateDWord(TargetRegister reg)
 {
     return Registers.First (register => Enum.GetName (typeof(TargetRegister), reg) == register.Name);
 }
コード例 #10
0
 public void Call(TargetRegister op1, TargetRegister op2)
 {
 }