2015-05-08 21:21:24 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								USING:  cpu.x86.assembler  cpu.x86.assembler.operands.private  help.markup 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								help.syntax layouts math ;
 
							 
						 
					
						
							
								
									
										
										
										
											2014-05-04 19:38:43 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								IN:  cpu.x86 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-05-08 21:21:24 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								HELP:  %boolean 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								{ $values
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  { "dst"  "register"  }
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  { "cc"  "comparision symbol"  }
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  { "temp"  "temporary register"  }
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								{ $description "Helper word for emitting conditional move instructions."  }
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								{ $see-also CMOVL CMOVLE CMOVG CMOVGE CMOVE CMOVNE } ;
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								HELP:  JLE 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								{ $values "dst"  "destination offset (relative to the instruction pointer register)"  }
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								{ $description "Emits a 'jle' instruction."  } ;
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								HELP:  reserved-stack-space 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								{ $values { "n"  integer  } }
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								{ $description "Size in bytes of the register parameter area. It only exists on the windows x86.64 architecture, where it is 32 bytes and allocated by the caller. On all other platforms it is 0."  } ;
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2014-05-04 19:38:43 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								HELP:  stack-reg 
							 
						 
					
						
							
								
									
										
										
										
											2014-05-10 19:45:07 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								{ $values { "reg"  "a register symbol"  } }
							 
						 
					
						
							
								
									
										
										
										
											2014-05-04 19:38:43 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								{ $description
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  "Symbol of the machine register that holds the (cpu) stack address." 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								} ;
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								HELP:  ds-reg 
							 
						 
					
						
							
								
									
										
										
										
											2014-05-10 19:45:07 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								{ $values { "reg"  "a register symbol"  } }
							 
						 
					
						
							
								
									
										
										
										
											2014-05-04 19:38:43 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								{ $description
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  "Symbol of the machine register that holds the address to the data stack's location." 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								} ;
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								HELP:  (%inc) 
							 
						 
					
						
							
								
									
										
										
										
											2014-05-10 19:45:07 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								{ $values { "n"  number  } { "reg"  "a register symbol"  } }
							 
						 
					
						
							
								
									
										
										
										
											2014-05-04 19:38:43 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								{ $description
							 
						 
					
						
							
								
									
										
										
										
											2014-05-06 12:10:24 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								  "Emits machine code for increasing or decreasing the given register a number of cell sizes bytes." 
							 
						 
					
						
							
								
									
										
										
										
											2014-05-04 19:38:43 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								{ $examples
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  { $unchecked-example
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    "USING: cpu.x86 make prettyprint ;" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    "[ 8 ECX (%inc) ] B{ } make disassemble" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    "00000000615e5140: 83c140  add ecx, 0x40" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  }
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								} ;
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-03-16 05:06:00 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								HELP:  (%slot) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								{ $values
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  { "obj"  "a register symbol"  }
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  { "slot"  "a register symbol"  }
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  { "scale"  "number of bits required to address all bytes in a "  { $link cell } "."  }
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  { "tag"  integer  }
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  { "op"  indirect }
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								{ $description "Creates an indirect operand for addressing a slot in a container."  }
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								{ $examples
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  { $unchecked-example
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    "USING: cpu.x86 ;" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    "[ RAX RBX 3 -14 (%slot) EDI MOV ] B{ } make disassemble" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    "0000000001dd0990: 897cd80e  mov [rax+rbx*8+0xe], edi" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  }
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								} ;
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2014-07-07 17:34:10 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								HELP:  decr-stack-reg 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								{ $values { "n"  number  } }
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								{ $description "Emits an instruction for decrementing the stack register the given number of bytes."  } ;
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2014-05-04 19:38:43 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								HELP:  load-zone-offset 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								{ $values { "nursery-ptr"  "a register symbol"  } }
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								{ $description
							 
						 
					
						
							
								
									
										
										
										
											2014-05-06 12:10:24 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								  "Emits machine code for loading the address to the nursery into the machine register." 
							 
						 
					
						
							
								
									
										
										
										
											2014-05-04 19:38:43 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								{ $examples
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  { $unchecked-example
							 
						 
					
						
							
								
									
										
										
										
											2014-05-06 12:10:24 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    "USING: cpu.x86 make ;" 
							 
						 
					
						
							
								
									
										
										
										
											2014-05-04 19:38:43 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								    "[ RCX load-zone-offset ] B{ } make disassemble" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    "0000000001b48f80: 498d4d10  lea rcx, [r13+0x10]" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  }
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								} ;
 
							 
						 
					
						
							
								
									
										
										
										
											2014-05-06 12:10:24 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2014-05-11 07:12:56 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								HELP:  store-tagged 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								{ $values { "dst"  "a register symbol"  } { "tag"  "a builtin class"  } }
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								{ $description "Tags the register with the tag number for the given class."  }
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								{ $examples
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  { $unchecked-example
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    "USING: cpu.x86 make ;" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    "[ RAX alien store-tagged ] B{ } make disassemble" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    "0000000002275f10: 4883c806  or rax, 0x6" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  }
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								} ;
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2014-05-06 12:10:24 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								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" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  }
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								} ;
 
							 
						 
					
						
							
								
									
										
										
										
											2014-05-11 07:12:56 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								HELP:  %mov-vm-ptr 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								{ $values { "reg"  "a register symbol"  } }
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								{ $description
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  "Emits machine code for moving the vm pointer to a register."  }
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								{ $examples
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  { $unchecked-example
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    "USING: cpu.x86.64 make ;" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    "[ RAX %mov-vm-ptr ] B{ } make disassemble" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    "0000000002290b30: 4c89e8  mov rax, r13" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  }
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								} ;