Improved x64 documentation

This commit is contained in:
2024-07-23 10:47:27 +02:00
parent eb160afd91
commit d6db1b1096
4 changed files with 24 additions and 18 deletions

View File

@ -1,16 +1,19 @@
package x64
// AddressMode encodes the addressing mode.
type AddressMode = byte
const (
AddressMemory = byte(0b00)
AddressMemoryOffset8 = byte(0b01)
AddressMemoryOffset32 = byte(0b10)
AddressDirect = byte(0b11)
AddressMemory = AddressMode(0b00)
AddressMemoryOffset8 = AddressMode(0b01)
AddressMemoryOffset32 = AddressMode(0b10)
AddressDirect = AddressMode(0b11)
)
// ModRM is used to generate a ModRM suffix.
// - mod: 2 bits
// - reg: 3 bits
// - rm: 3 bits
func ModRM(mod byte, reg byte, rm byte) byte {
// - mod: 2 bits. The addressing mode.
// - reg: 3 bits. Register reference or opcode extension.
// - rm: 3 bits. Register operand.
func ModRM(mod AddressMode, reg byte, rm byte) byte {
return (mod << 6) | (reg << 3) | rm
}