Added basic support for arm64

This commit is contained in:
2025-03-06 13:40:17 +01:00
parent 14abb8202b
commit 2f09b96f34
25 changed files with 270 additions and 33 deletions

43
src/arm/Move_test.go Normal file
View File

@ -0,0 +1,43 @@
package arm_test
import (
"testing"
"git.urbach.dev/cli/q/src/arm"
"git.urbach.dev/cli/q/src/cpu"
"git.urbach.dev/go/assert"
)
func TestMoveKeep(t *testing.T) {
usagePatterns := []struct {
Register cpu.Register
Number uint16
Code []byte
}{
{arm.X0, 0, []byte{0x00, 0x00, 0x80, 0xF2}},
{arm.X0, 1, []byte{0x20, 0x00, 0x80, 0xF2}},
}
for _, pattern := range usagePatterns {
t.Logf("movk %s, %x", pattern.Register, pattern.Number)
code := arm.MoveKeep(nil, pattern.Register, 0, pattern.Number)
assert.DeepEqual(t, code, pattern.Code)
}
}
func TestMoveZero(t *testing.T) {
usagePatterns := []struct {
Register cpu.Register
Number uint16
Code []byte
}{
{arm.X0, 0, []byte{0x00, 0x00, 0x80, 0xD2}},
{arm.X0, 1, []byte{0x20, 0x00, 0x80, 0xD2}},
}
for _, pattern := range usagePatterns {
t.Logf("movz %s, %x", pattern.Register, pattern.Number)
code := arm.MoveZero(nil, pattern.Register, 0, pattern.Number)
assert.DeepEqual(t, code, pattern.Code)
}
}