mirror of
https://github.com/danbulant/Cosmos
synced 2026-05-20 04:48:53 +00:00
[+] Bgt works with 64-bit values now.
This commit is contained in:
parent
45377fd9e6
commit
492fcb6189
1 changed files with 24 additions and 20 deletions
|
|
@ -27,26 +27,30 @@ namespace Indy.IL2CPU.IL.X86 {
|
|||
if (xStackContent.Size > 8) {
|
||||
throw new Exception("StackSize>8 not supported");
|
||||
}
|
||||
new CPUx86.Pop(CPUx86.Registers.EAX);
|
||||
if (xStackContent.Size > 4) {
|
||||
throw new NotImplementedException("long comprasion is not implemented");
|
||||
new CPUx86.Add("esp", "4");
|
||||
}
|
||||
new CPUx86.Compare(CPUx86.Registers.EAX, CPUx86.Registers.AtESP);
|
||||
new CPUx86.JumpIfGreater(LabelTrue);
|
||||
new CPUx86.JumpAlways(LabelFalse);
|
||||
new CPU.Label(LabelTrue);
|
||||
new CPUx86.Add(CPUx86.Registers.ESP, "4");
|
||||
if (xStackContent.Size > 4) {
|
||||
throw new NotImplementedException("long comprasion is not implemented");
|
||||
new CPUx86.Add("esp", "4");
|
||||
}
|
||||
new CPUx86.JumpAlways(TargetLabel);
|
||||
new CPU.Label(LabelFalse);
|
||||
new CPUx86.Add(CPUx86.Registers.ESP, "4");
|
||||
if (xStackContent.Size > 4) {
|
||||
throw new NotImplementedException("long comprasion is not implemented");
|
||||
new CPUx86.Add("esp", "4");
|
||||
if (xStackContent.Size > 4)
|
||||
{
|
||||
//target label is then value1 >= value2
|
||||
new CPUx86.Pop(CPUx86.Registers.EAX);
|
||||
new CPUx86.Pop(CPUx86.Registers.EDX);
|
||||
//value2: EDX:EAX
|
||||
new CPUx86.Pop("ebx");
|
||||
new CPUx86.Pop("ecx");
|
||||
//value1: ECX:EBX
|
||||
new CPUx86.Sub("ebx", "eax");
|
||||
new CPUx86.SubWithCarry("ecx", "edx");
|
||||
//result = value2 - value1
|
||||
new CPUx86.JumpOnGreater(TargetLabel);
|
||||
}else
|
||||
{
|
||||
new CPUx86.Pop(CPUx86.Registers.EAX);
|
||||
new CPUx86.Compare(CPUx86.Registers.EAX, CPUx86.Registers.AtESP);
|
||||
new CPUx86.JumpIfGreater(LabelTrue);
|
||||
new CPUx86.JumpAlways(LabelFalse);
|
||||
new CPU.Label(LabelTrue);
|
||||
new CPUx86.Add(CPUx86.Registers.ESP, "4");
|
||||
new CPUx86.JumpAlways(TargetLabel);
|
||||
new CPU.Label(LabelFalse);
|
||||
new CPUx86.Add(CPUx86.Registers.ESP, "4");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue