[yalo commit] r138 - wiki

0 views
Skip to first unread message

codesite...@google.com

unread,
Mar 3, 2009, 9:04:29 AM3/3/09
to yalo-...@googlegroups.com
Author: yujian.zhang
Date: Tue Mar 3 05:27:18 2009
New Revision: 138

Added:
wiki/AssemblyX64Arith.wiki
Modified:
wiki/AssemblyX64A.wiki
wiki/AssemblyX64C.wiki
wiki/AssemblyX64O.wiki
wiki/AssemblyX64S.wiki
wiki/AssemblyX64X.wiki

Log:
wiki: summarize arithmetic related instructions.

Modified: wiki/AssemblyX64A.wiki
==============================================================================
--- wiki/AssemblyX64A.wiki (original)
+++ wiki/AssemblyX64A.wiki Tue Mar 3 05:27:18 2009
@@ -4,38 +4,19 @@

<wiki:toc max_depth="1" />

+= adc: Add with Carry =
+
+Please refer to [AssemblyX64Arith x86-64 arithmetic instructions] for
details.
+
+--------
+
= add: Add =

-|| Instruction || Opcode || 64-Bit Mode || 16/32-Bit Mode ||
Description ||
-|| add al imm8 || 04 ib || Valid || Valid || Add
imm8 to al ||
-|| add ax imm16 || o16 05 iw || Valid || Valid || Add
imm16 to ax ||
-|| add eax imm32 || o32 05 id || Valid || Valid || Add
imm32 to eax ||
-|| add rax imm32 || rex.w 05 id || Valid || ~~N.E.~~ || Add
sign extended imm32 to rax ||
-|| add r/m8 imm8 || 80 /0 ib || Valid || Valid || Add
imm8 to r/m8 ||
-|| add r/m16 imm16 || o16 81 /0 iw || Valid || Valid || Add
imm16 to r/m16 ||
-|| add r/m32 imm32 || o32 81 /0 id || Valid || Valid || Add
imm32 to r/m32 ||
-|| add r/m16 imm8 || o16 83 /0 ib || Valid || Valid || Add
sign extended imm8 to r/m16 ||
-|| add r/m32 imm8 || o32 83 /0 ib || Valid || Valid || Add
sign extended imm8 to r/m32 ||
-|| add r/m8 r8 || 00 /r || Valid || Valid || Add
r8 to r/m8 ||
-|| add r/m16 r16 || o16 01 /r || Valid || Valid || Add
r16 to r/m16 ||
-|| add r/m32 r32 || o32 01 /r || Valid || Valid || Add
r32 to r/m32 ||
-|| add r8 r/m8 || 02 /r || Valid || Valid || Add
r/m8 to r8 ||
-|| add r16 r/m16 || o16 03 /r || Valid || Valid || Add
r/m16 to r16 ||
-|| add r32 r/m32 || o32 03 /r || Valid || Valid || Add
r/m32 to r32 ||
+Please refer to [AssemblyX64Arith x86-64 arithmetic instructions] for
details.

--------

= and: Logical AND =

-|| Instruction || Opcode || 64-Bit Mode || 16/32-Bit Mode ||
Description ||
-|| and al imm8 || 24 ib || Valid || Valid || al AND
imm8 ||
-|| and ax imm16 || 25 iw || Valid || Valid || ax AND
imm16 ||
-|| and r/m8 imm8 || 80 /4 ib || Valid || Valid || r/m8
AND imm8 ||
-|| and r/m16 imm16 || 81 /4 iw || Valid || Valid || r/m16
AND imm16 ||
-|| and r/m16 imm8 || 83 /4 ib || Valid || Valid || r/m16
AND imm8 (sign extended) ||
-|| and r/m8 r8 || 20 /r || Valid || Valid || r8 AND
r/m8 ||
-|| and r/m16 r16 || 21 /r || Valid || Valid || r16 AND
r/m16 ||
-|| and r8 r/m8 || 22 /r || Valid || Valid || r/m8
AND r8 ||
-|| and r16 r/m16 || 23 /r || Valid || Valid || r/m16
AND r16 ||
-
+Please refer to [AssemblyX64Arith x86-64 arithmetic instructions] for
details.


Added: wiki/AssemblyX64Arith.wiki
==============================================================================
--- (empty file)
+++ wiki/AssemblyX64Arith.wiki Tue Mar 3 05:27:18 2009
@@ -0,0 +1,54 @@
+#summary x86-64 Arithmetic Instruction
+#labels Phase-Implementation
+#sidebar SBX64Assembly
+
+<wiki:toc max_depth="1" />
+
+There are 8 arithmetic instructions which have similar formats of
+instructions. They are discussed together here.
+
+The instructions are:
+ * adc: add with carry
+ * add: add
+ * and: logical and
+ * cmp: compare
+ * or: logical or
+ * sbb: subtract with borrow
+ * sub: subtract
+ * xor: logical exclusive or
+
+The format of the instructions are given below.
+
+|| Instruction || Opcode || 64-Bit Mode || 16/32-Bit Mode |
|
+|| ins al imm8 || (+ base 04) ib || Valid || Valid |
|
+|| ins ax imm16 || o16 (+ base 05) iw || Valid || Valid |
|
+|| ins eax imm32 || o32 (+ base 05) id || Valid || Valid |
|
+|| ins rax imm32 || (+ base 05) id || Valid || ~~N.E.~~ |
|
+|| ins r/m8 imm8 || 80 opcode ib || Valid || Valid |
|
+|| ins r/m16 imm16 || o16 81 opcode iw || Valid || Valid |
|
+|| ins r/m32 imm32 || o32 81 opcode id || Valid || Valid |
|
+|| ins r/m64 imm32 || 81 opcode id || Valide || ~~N.E.~~ |
|
+|| ins r/m16 imm8 || o16 83 opcode ib || Valid || Valid |
|
+|| ins r/m32 imm8 || o32 83 opcode ib || Valid || Valid |
|
+|| ins r/m64 imm8 || 83 opcode ib || Valid || ~~N.E.~~ |
|
+|| ins r/m8 r8 || base /r || Valid || Valid |
|
+|| ins r/m16 r16 || o16 (+ base 01) /r || Valid || Valid |
|
+|| ins r/m32 r32 || o32 (+ base 01) /r || Valid || Valid |
|
+|| ins r/m64 r64 || (+ base 01) /r || Valid || ~~N.E.~~ |
|
+|| ins r8 r/m8 || (+ base 02) /r || Valid || Valid |
|
+|| ins r16 r/m16 || o16 (+ base 03) /r || Valid || Valid |
|
+|| ins r32 r/m32 || o32 (+ base 03) /r || Valid || Valid |
|
+|| ins r64 r/m64 || (+ base 03) /r || Valid || ~~N.E.~~ |
|
+
+Base and opcode in above table are given below for each instruction.
+
+|| instruction || base (hexadecimal) || opcode ||
+|| adc || 10 || /2 ||
+|| add || 00 || /0 ||
+|| and || 20 || /4 ||
+|| cmp || 38 || /7 ||
+|| or || 08 || /1 ||
+|| sbb || 18 || /3 ||
+|| sub || 28 || /5 ||
+|| xor || 30 || /6 ||
+

Modified: wiki/AssemblyX64C.wiki
==============================================================================
--- wiki/AssemblyX64C.wiki (original)
+++ wiki/AssemblyX64C.wiki Tue Mar 3 05:27:18 2009
@@ -40,16 +40,7 @@

= cmp: Compare =

-|| Instruction || Opcode || 64-Bit Mode || 16/32-Bit Mode ||
Description ||
-|| cmp al imm8 || 3C ib || Valid || Valid || Compare
imm8 with al ||
-|| cmp ax imm16 || 3D iw || Valid || Valid || Compare
imm16 with ax ||
-|| cmp r/m8 imm8 || 80 /7 ib || Valid || Valid || Compare
imm8 with r/m8 ||
-|| cmp r/m16 imm16 || 81 /7 iw || Valid || Valid || Compare
imm16 with r/m16 ||
-|| cmp r/m16 imm8 || 83 /7 ib || Valid || Valid || Compare
sign extended imm8 with r/m16 ||
-|| cmp r/m8 r8 || 38 /r || Valid || Valid || Compare r8
with r/m8 ||
-|| cmp r/m16 r16 || 39 /r || Valid || Valid || Compare
r16 with r/m16 ||
-|| cmp r8 r/m8 || 3A /r || Valid || Valid || Compare
r/m8 with r8 ||
-|| cmp r16 r/m16 || 3B /r || Valid || Valid || Compare
r/m16 with r16 ||
+Please refer to [AssemblyX64Arith x86-64 arithmetic instructions] for
details.

--------


Modified: wiki/AssemblyX64O.wiki
==============================================================================
--- wiki/AssemblyX64O.wiki (original)
+++ wiki/AssemblyX64O.wiki Tue Mar 3 05:27:18 2009
@@ -8,16 +8,7 @@

= or: Logical Inclusive OR =

-|| Instruction || Opcode || 64-Bit Mode || 16/32-Bit Mode ||
Description ||
-|| or al imm8 || 0C ib || Valid || Valid || al OR
imm8 ||
-|| or ax imm16 || 0D iw || Valid || Valid || ax OR
imm16 ||
-|| or r/m8 imm8 || 80 /1 ib || Valid || Valid || r/m8 OR
imm8 ||
-|| or r/m16 imm16 || 81 /1 iw || Valid || Valid || r/m16 OR
imm16 ||
-|| or r/m16 imm8 || 83 /1 ib || Valid || Valid || r/m16
OR imm8 (sign extended) ||
-|| or r/m8 r8 || 08 /r || Valid || Valid || r8 OR
r/m8 ||
-|| or r/m16 r16 || 09 /r || Valid || Valid || r16 OR
r/m16 ||
-|| or r8 r/m8 || 0A /r || Valid || Valid || r/m8 OR
r8 ||
-|| or r16 r/m16 || 0B /r || Valid || Valid || r/m16 OR
r16 ||
+Please refer to [AssemblyX64Arith x86-64 arithmetic instructions] for
details.

--------


Modified: wiki/AssemblyX64S.wiki
==============================================================================
--- wiki/AssemblyX64S.wiki (original)
+++ wiki/AssemblyX64S.wiki Tue Mar 3 05:27:18 2009
@@ -4,6 +4,13 @@

<wiki:toc max_depth="1" />

+
+= sbb: subtract with borrow =
+
+Please refer to [AssemblyX64Arith x86-64 arithmetic instructions] for
details.
+
+--------
+
= shl/shr: Shift =

|| Instruction || Opcode || 64-Bit Mode || 16/32-Bit Mode ||
Description ||
@@ -48,16 +55,7 @@

= sub: Sub =

-|| Instruction || Opcode || 64-Bit Mode || 16/32-Bit Mode ||
Description ||
-|| sub al imm8 || 2C ib || Valid || Valid || Sub
imm8 from al ||
-|| sub ax imm16 || 2D iw || Valid || Valid || Sub
imm16 from ax ||
-|| sub r/m8 imm8 || 80 /5 ib || Valid || Valid || Sub
imm8 from r/m8 ||
-|| sub r/m16 imm16 || 81 /5 iw || Valid || Valid || Sub
imm16 from r/m16 ||
-|| sub r/m16 imm8 || 83 /5 ib || Valid || Valid || Sub
sign extended imm8 from r/m16 ||
-|| sub r/m8 r8 || 28 /r || Valid || Valid || Sub r8
from r/m8 ||
-|| sub r/m16 r16 || 29 /r || Valid || Valid || Sub r16
from r/m16 ||
-|| sub r8 r/m8 || 2A /r || Valid || Valid || Sub
r/m8 from r8 ||
-|| sub r16 r/m16 || 2B /r || Valid || Valid || Sub
r/m16 from r16 ||
+Please refer to [AssemblyX64Arith x86-64 arithmetic instructions] for
details.

--------


Modified: wiki/AssemblyX64X.wiki
==============================================================================
--- wiki/AssemblyX64X.wiki (original)
+++ wiki/AssemblyX64X.wiki Tue Mar 3 05:27:18 2009
@@ -40,14 +40,5 @@

= xor: Logical Exclusive OR =

-|| Instruction || Opcode || 64-Bit Mode || 16/32-Bit Mode ||
Description ||
-|| xor al imm8 || 34 ib || Valid || Valid || al XOR
imm8 ||
-|| xor ax imm16 || 35 iw || Valid || Valid || ax XOR
imm16 ||
-|| xor r/m8 imm8 || 80 /6 ib || Valid || Valid || r/m8
XOR imm8 ||
-|| xor r/m16 imm16 || 81 /6 iw || Valid || Valid || r/m16
XOR imm16 ||
-|| xor r/m16 imm8 || 83 /6 ib || Valid || Valid || r/m16
XOR imm8 (sign extended) ||
-|| xor r/m8 r8 || 30 /r || Valid || Valid || r8 XOR
r/m8 ||
-|| xor r/m16 r16 || 31 /r || Valid || Valid || r16 XOR
r/m16 ||
-|| xor r8 r/m8 || 32 /r || Valid || Valid || r/m8
XOR r8 ||
-|| xor r16 r/m16 || 33 /r || Valid || Valid || r/m16
XOR r16 ||
+Please refer to [AssemblyX64Arith x86-64 arithmetic instructions] for
details.

Reply all
Reply to author
Forward
0 new messages