]> gitweb.factorcode.org Git - factor.git/blob - basis/cpu/x86/assembler/operands/operands-docs.factor
04e55a098c225b2b05b3454c8a3a0c70d5d2160b
[factor.git] / basis / cpu / x86 / assembler / operands / operands-docs.factor
1 USING: cpu.x86.assembler.operands.private help.markup help.syntax math ;
2 IN: cpu.x86.assembler.operands
3
4 HELP: indirect
5 { $class-description "Tuple that represents an indirect addressing operand. It has the following slots:"
6   { $table
7     { { $slot "index" } { "Register for the index value. It must not be " { $link ESP } " or " { $link RSP } "." } }
8     { { $slot "displacement" } { "An integer offset." } }
9   }
10 } ;
11
12 HELP: [RIP+]
13 { $values { "displacement" number } { "indirect" indirect } }
14 { $description "Creates an indirect operand relative to the RIP register." }
15 { $examples
16   { $unchecked-example
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"
20   }
21 } ;
22
23 HELP: []
24 { $values { "base/displacement" "register or an integer" } { "indirect" indirect } }
25 { $description "Creates an indirect operand from a given address or " { $link register } "." } ;
26
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." } ;
30
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:"
35 { $subsections
36   8-bit-version-of
37   16-bit-version-of
38   32-bit-version-of
39   64-bit-version-of
40   n-bit-version-of
41   native-version-of
42 } ;