factor/basis/cpu/x86/assembler/operands/operands-docs.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
} ;