[llvm-commits] CVS: llvm/lib/Target/X86/README.txt

Chris Lattner lattner at cs.uiuc.edu
Sun Nov 17 14:34:00 PST 2002


Changes in directory llvm/lib/Target/X86:

README.txt updated: 1.2 -> 1.3

---
Log message:

Add information about memory index representation


---
Diffs of the changes:

Index: llvm/lib/Target/X86/README.txt
diff -u llvm/lib/Target/X86/README.txt:1.2 llvm/lib/Target/X86/README.txt:1.3
--- llvm/lib/Target/X86/README.txt:1.2	Wed Oct 30 00:04:46 2002
+++ llvm/lib/Target/X86/README.txt	Sun Nov 17 14:33:26 2002
@@ -128,8 +128,33 @@
 bunch of really trivial testcases that we should build up to supporting.
 
 
+===================================================
+IV. Strange Things, or, Things That Should Be Known
+===================================================
+
+Representing memory in MachineInstrs
+------------------------------------
+
+The x86 has a very, uhm, flexible, way of accessing memory.  It is capable of
+addressing memory addresses of the following form directly in integer
+instructions (which use ModR/M addressing):
+
+   Base+[1,2,4,8]*IndexReg+Disp32
+
+Wow, that's crazy.  In order to represent this, LLVM tracks no less that 4
+operands for each memory operand of this form.  This means that the "load" form
+of 'mov' has the following "Operands" in this order:
+
+Index:        0     |    1        2       3           4
+Meaning:   DestReg, | BaseReg,  Scale, IndexReg, Displacement
+OperandTy: VirtReg, | VirtReg, UnsImm, VirtReg,   SignExtImm
+
+Stores and all other instructions treat the four memory operands in the same
+way, in the same order.
+
+
 ==========================
-IV. TODO / Future Projects
+V. TODO / Future Projects
 ==========================
 
 There are a large number of things remaining to do.  Here is a partial list:





More information about the llvm-commits mailing list