Improved build performance

This commit is contained in:
2023-10-29 16:16:36 +01:00
parent fbe6aa80bb
commit 5fe83543fd
18 changed files with 122 additions and 120 deletions

14
src/x64/Call.go Normal file
View File

@ -0,0 +1,14 @@
package x64
// Call places the return address on the top of the stack and continues
// program flow at the new address. The address is relative to the next instruction.
func Call(code []byte, address uint32) []byte {
return append(
code,
0xe8,
byte(address),
byte(address>>8),
byte(address>>16),
byte(address>>24),
)
}

13
src/x64/Move.go Normal file
View File

@ -0,0 +1,13 @@
package x64
// MoveRegNum32 moves a 32 bit integer into the given register.
func MoveRegNum32(code []byte, register uint8, number uint32) []byte {
return append(
code,
0xb8+register,
byte(number),
byte(number>>8),
byte(number>>16),
byte(number>>24),
)
}

7
src/x64/Return.go Normal file
View File

@ -0,0 +1,7 @@
package x64
// Return transfers program control to a return address located on the top of the stack.
// The address is usually placed on the stack by a Call instruction.
func Return(code []byte) []byte {
return append(code, 0xc3)
}

6
src/x64/Syscall.go Normal file
View File

@ -0,0 +1,6 @@
package x64
// Syscall is the primary way to communicate with the OS kernel.
func Syscall(code []byte) []byte {
return append(code, 0x0f, 0x05)
}