parent
31c5ed614c
commit
9b2b2578f5
57 changed files with 2661 additions and 0 deletions
19
src/x86/ModRM.go
Normal file
19
src/x86/ModRM.go
Normal file
|
@ -0,0 +1,19 @@
|
|||
package x86
|
||||
|
||||
// AddressMode encodes the addressing mode.
|
||||
type AddressMode = byte
|
||||
|
||||
const (
|
||||
AddressMemory = AddressMode(0b00)
|
||||
AddressMemoryOffset8 = AddressMode(0b01)
|
||||
AddressMemoryOffset32 = AddressMode(0b10)
|
||||
AddressDirect = AddressMode(0b11)
|
||||
)
|
||||
|
||||
// ModRM is used to generate a mode-register-memory suffix.
|
||||
// - 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
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue