Fixed move with negative numbers on arm64

This commit is contained in:
2025-03-15 20:34:47 +01:00
parent b8f05c8994
commit bcb04a4cec

View File

@ -22,16 +22,17 @@ func MoveRegisterNumber(code []byte, destination cpu.Register, number int) []byt
func MoveRegisterNumberMI(code []byte, destination cpu.Register, number int) []byte {
movz := MoveZero(destination, 0, uint16(number))
code = binary.LittleEndian.AppendUint32(code, movz)
num := uint64(number)
halfword := 1
for {
number >>= 16
num >>= 16
if number == 0 {
if num == 0 {
return code
}
movk := MoveKeep(destination, halfword, uint16(number))
movk := MoveKeep(destination, halfword, uint16(num))
code = binary.LittleEndian.AppendUint32(code, movk)
halfword++
}