Implemented more arm64 instructions

This commit is contained in:
Eduard Urbach 2025-03-06 23:13:14 +01:00
parent 1832d2c73b
commit 014f161633
Signed by: eduard
GPG key ID: 49226B848C78F6C8
26 changed files with 232 additions and 73 deletions

31
src/arm/Load_test.go Normal file
View file

@ -0,0 +1,31 @@
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 TestLoadRegister(t *testing.T) {
usagePatterns := []struct {
Destination cpu.Register
Base cpu.Register
Offset int16
Length byte
Code uint32
}{
{arm.X2, arm.X1, -8, 8, 0xF85F8022},
{arm.X2, arm.X1, 0, 8, 0xF8400022},
{arm.X2, arm.X1, 8, 8, 0xF8408022},
{arm.X2, arm.X1, -256, 8, 0xF8500022},
{arm.X2, arm.X1, 255, 8, 0xF84FF022},
}
for _, pattern := range usagePatterns {
t.Logf("ldur %s, [%s, %d] %db", pattern.Destination, pattern.Base, pattern.Offset, pattern.Length)
code := arm.LoadRegister(pattern.Destination, pattern.Base, pattern.Offset, pattern.Length)
assert.DeepEqual(t, code, pattern.Code)
}
}