Fixed comparison with negative numbers on arm64

This commit is contained in:
2025-03-14 11:14:42 +01:00
parent 9726f1d832
commit 9410287605
5 changed files with 40 additions and 23 deletions

View File

@ -4,10 +4,14 @@ import "git.urbach.dev/cli/q/src/cpu"
// CompareRegisterNumber is an alias for a subtraction that updates the conditional flags and discards the result.
func CompareRegisterNumber(register cpu.Register, number int) uint32 {
return addRegisterNumber(0b11, 1, ZR, register, number)
if number < 0 {
return addRegisterNumber(ZR, register, -number, 1)
}
return subRegisterNumber(ZR, register, number, 1)
}
// CompareRegisterRegister is an alias for a subtraction that updates the conditional flags and discards the result.
func CompareRegisterRegister(reg1 cpu.Register, reg2 cpu.Register) uint32 {
return addRegisterRegister(0b11, 1, ZR, reg1, reg2)
return subRegisterRegister(ZR, reg1, reg2, 1)
}