diff --git a/basis/cpu/architecture/architecture-docs.factor b/basis/cpu/architecture/architecture-docs.factor index 0cb5e4c803..bf92698646 100644 --- a/basis/cpu/architecture/architecture-docs.factor +++ b/basis/cpu/architecture/architecture-docs.factor @@ -1,4 +1,4 @@ -USING: help.markup help.syntax math ; +USING: assocs cpu.x86.assembler help.markup help.syntax math system ; IN: cpu.architecture HELP: immediate-arithmetic? @@ -16,3 +16,11 @@ HELP: vm-stack-space HELP: complex-addressing? { $description "Specifies if " { $link %slot } ", " { $link %set-slot } " and " { $link %write-barrier } " accept the 'scale' and 'tag' parameters, and if %load-memory and %store-memory work." } ; + +HELP: %load-immediate +{ $values { "reg" "a register symbol" } { "val" "a value" } } +{ $description "Emits code for loading an immediate value into a register. On " { $link x86 } ", if val is 0, then an " { $link XOR } " instruction is emitted instead of " { $link MOV } "." } ; + +HELP: param-regs +{ $values { "abi" "a calling convention symbol" } { "regs" assoc } } +{ $description "Retrieves the order in which machine registers are used for parameters for the given calling convention." } ; diff --git a/basis/cpu/x86/x86-docs.factor b/basis/cpu/x86/x86-docs.factor index a2be230077..611ceb3736 100644 --- a/basis/cpu/x86/x86-docs.factor +++ b/basis/cpu/x86/x86-docs.factor @@ -13,7 +13,7 @@ HELP: ds-reg HELP: (%inc) { $description - "Generates machine code for increasing or decreasing the given register a number of cell sizes bytes." + "Emits machine code for increasing or decreasing the given register a number of cell sizes bytes." } { $examples { $unchecked-example @@ -26,12 +26,29 @@ HELP: (%inc) HELP: load-zone-offset { $values { "nursery-ptr" "a register symbol" } } { $description - "Generates machine code for loading the address to the nursery into the machine register." + "Emits machine code for loading the address to the nursery into the machine register." } { $examples { $unchecked-example - "USING: cpu.x86 make prettyprint ;" + "USING: cpu.x86 make ;" "[ RCX load-zone-offset ] B{ } make disassemble" "0000000001b48f80: 498d4d10 lea rcx, [r13+0x10]" } } ; + +HELP: copy-register* +{ $values + { "dst" "a register symbol" } + { "src" "a register symbol" } + { "rep" "a value representation singleton" } +} +{ $description + "Emits machine code for copying from a register to another." +} +{ $examples + { $unchecked-example + "USING: cpu.x86 make ;" + "[ XMM1 XMM2 double-rep copy-register* ] B{ } make disassemble" + "0000000533c61fe0: 0f28ca movaps xmm1, xmm2" + } +} ;