Beispiel #1
0
 //        ; (No Type Info available)
 //; Method 'System.Void  Cosmos.Kernel.Plugs.CPU.GetCPUId(System.UInt32&, System.UInt32&, System.UInt32&, System.UInt32&, System.UInt32)'
 //; Locals:
 //;     (none)
 //; Arguments:
 //;     (0) 16	4	ebp + 018h (Type = System.UInt32&)
 //;     (1) 12	4	ebp + 014h (Type = System.UInt32&)
 //;     (2) 8	4	ebp + 010h (Type = System.UInt32&)
 //;     (3) 4	4	ebp + 0Ch (Type = System.UInt32&)
 //;     (4) 0	4	ebp + 08h (Type = System.UInt32)
 //;     ReturnSize: 0
 public override void AssembleNew(Cosmos.Assembler.Assembler aAssembler, object aMethodInfo)
 {
     new CPUx86.ClrInterruptFlag();
     XS.Mov(XSRegisters.EAX, XSRegisters.EBP, sourceDisplacement: 8);
     XS.CpuId();
     XS.Mov(XSRegisters.EDI, XSRegisters.EBP, sourceDisplacement: 0x18);
     XS.Mov(XSRegisters.EDI, XSRegisters.EDX, destinationIsIndirect: true);
     XS.Mov(XSRegisters.EDI, XSRegisters.EBP, sourceDisplacement: 0x14);
     XS.Mov(XSRegisters.EDI, XSRegisters.ECX, destinationIsIndirect: true);
     XS.Mov(XSRegisters.EDI, XSRegisters.EBP, sourceDisplacement: 0x10);
     XS.Mov(XSRegisters.EDI, XSRegisters.EBX, destinationIsIndirect: true);
     XS.Mov(XSRegisters.EDI, XSRegisters.EBP, sourceDisplacement: 0xC);
     XS.Mov(XSRegisters.EDI, XSRegisters.EAX, destinationIsIndirect: true);
     XS.Sti();
 }