Added x86 package
All checks were successful
/ test (push) Successful in 14s

This commit is contained in:
Eduard Urbach 2025-06-23 11:45:57 +02:00
parent 31c5ed614c
commit bac5986425
Signed by: akyoto
GPG key ID: 49226B848C78F6C8
61 changed files with 2745 additions and 0 deletions

37
src/x86/Push.go Normal file
View file

@ -0,0 +1,37 @@
package x86
import (
"git.urbach.dev/cli/q/src/cpu"
"git.urbach.dev/cli/q/src/sizeof"
)
// PushNumber pushes a number onto the stack.
func PushNumber(code []byte, number int32) []byte {
length := sizeof.Signed(number)
if length >= 2 {
return append(
code,
0x68,
byte(number),
byte(number>>8),
byte(number>>16),
byte(number>>24),
)
}
return append(code, 0x6A, byte(number))
}
// PushRegister pushes the value inside the register onto the stack.
func PushRegister(code []byte, register cpu.Register) []byte {
if register > 0b111 {
code = append(code, REX(0, 0, 0, 1))
register &= 0b111
}
return append(
code,
0x50+byte(register),
)
}