1 USING: cpu.x86.assembler.operands.private help.markup help.syntax math ;
2 IN: cpu.x86.assembler.operands
5 { $class-description "Tuple that represents an indirect addressing operand. It has the following slots:"
7 { { $slot "index" } { "Register for the index value. It must not be " { $link ESP } " or " { $link RSP } "." } }
8 { { $slot "displacement" } { "An integer offset." } }
13 { $values { "displacement" number } { "indirect" indirect } }
14 { $description "Creates an indirect operand relative to the RIP register." }
17 "USING: cpu.x86.assembler cpu.x86.assembler.operands make tools.disassembler ;"
18 "[ 0x1234 [RIP+] EAX MOV ] B{ } make disassemble"
19 "00000000015cef50: 890534120000 mov [rip+0x1234], eax"
24 { $values { "base/displacement" "register or an integer" } { "indirect" indirect } }
25 { $description "Creates an indirect operand from a given address or " { $link register } "." } ;
27 HELP: n-bit-version-of
28 { $values { "register" register } { "n" integer } { "register'" register } }
29 { $description "Returns a less wide version of the given register." } ;
31 ARTICLE: "cpu.x86.assembler.operands" "CPU x86 registers and memory operands"
32 "Indirect operand constructors for various addressing formats:"
33 { $subsections [] [RIP+] [+] [++] [+*2+] [+*4+] [+*8+] }
34 "Register correspondences:"