From bcb04a4cece89a7d697f5f1cfb3e6f930f363fdf Mon Sep 17 00:00:00 2001 From: Eduard Urbach Date: Sat, 15 Mar 2025 20:34:47 +0100 Subject: [PATCH] Fixed move with negative numbers on arm64 --- src/arm/Move.go | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/arm/Move.go b/src/arm/Move.go index d5851ec..e1bfcb3 100644 --- a/src/arm/Move.go +++ b/src/arm/Move.go @@ -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++ }