43 lines
1.5 KiB
Factor
43 lines
1.5 KiB
Factor
USING: cpu.x86.assembler.operands.private help.markup help.syntax math ;
|
|
IN: cpu.x86.assembler.operands
|
|
|
|
HELP: indirect
|
|
{ $class-description "Tuple that represents an indirect addressing operand. It has the following slots:"
|
|
{ $table
|
|
{ { $slot "index" } { "Register for the index value. It must not be " { $link ESP } " or " { $link RSP } "." } }
|
|
{ { $slot "displacement" } { "An integer offset." } }
|
|
}
|
|
} ;
|
|
|
|
HELP: [RIP+]
|
|
{ $values { "displacement" number } { "indirect" indirect } }
|
|
{ $description "Creates an indirect operand relative to the RIP register." }
|
|
{ $examples
|
|
{ $unchecked-example
|
|
"USING: cpu.x86.assembler cpu.x86.assembler.operands make tools.disassembler ;"
|
|
"[ 0x1234 [RIP+] EAX MOV ] B{ } make disassemble"
|
|
"00000000015cef50: 890534120000 mov [rip+0x1234], eax"
|
|
}
|
|
} ;
|
|
|
|
HELP: []
|
|
{ $values { "base/displacement" "register or an integer" } { "indirect" indirect } }
|
|
{ $description "Creates an indirect operand from a given address or " { $link register } "." } ;
|
|
|
|
HELP: n-bit-version-of
|
|
{ $values { "register" register } { "n" integer } { "register'" register } }
|
|
{ $description "Returns a less wide version of the given register." } ;
|
|
|
|
ARTICLE: "cpu.x86.assembler.operands" "CPU x86 registers and memory operands"
|
|
"Indirect operand constructors for various addressing formats:"
|
|
{ $subsections [] [RIP+] [+] [++] [+*2+] [+*4+] [+*8+] }
|
|
"Register correspondances:"
|
|
{ $subsections
|
|
8-bit-version-of
|
|
16-bit-version-of
|
|
32-bit-version-of
|
|
64-bit-version-of
|
|
n-bit-version-of
|
|
native-version-of
|
|
} ;
|