[yalo commit] r135 - trunk/cc wiki

0 views
Skip to first unread message

codesite...@google.com

unread,
Mar 3, 2009, 8:45:25 AM3/3/09
to yalo-...@googlegroups.com
Author: yujian.zhang
Date: Tue Mar 3 05:25:10 2009
New Revision: 135

Modified:
trunk/cc/test-cc.lisp
trunk/cc/x86-64-syntax.lisp
wiki/AssemblyX64C.wiki

Log:
Add instruction cmpxchg.

Modified: trunk/cc/test-cc.lisp
==============================================================================
--- trunk/cc/test-cc.lisp (original)
+++ trunk/cc/test-cc.lisp Tue Mar 3 05:25:10 2009
@@ -218,6 +218,10 @@
(cmova ax bx)
(cmovc eax edx)
(cmove rdx r10)
+ (cmpxchg cl dl)
+ (cmpxchg cx dx)
+ (cmpxchg edi edx)
+ (cmpxchg rcx r10)
(cmpxchg8b (rbx))
(cmpxchg16b (rbx))
(jb near msg)
@@ -235,15 +239,16 @@
"Miscellaneous instructions.")

(defparameter *misc-code*
- '(232 131 0 248 252 250 244 228 3 229 4 236 237 204 205 16 116 254
- 235 252 15 1 22 134 124 15 1 30 134 124 15 0 210 15 0 22 134 124
- 172 173 226 230 180 9 187 13 0 137 200 137 30 134 124 139 14 123
- 28 199 6 134 124 123 0 142 195 140 200 144 230 3 231 4 238 239 81
+ '(232 145 0 248 252 250 244 228 3 229 4 236 237 204 205 16 116 254
+ 235 252 15 1 22 148 124 15 1 30 148 124 15 0 210 15 0 22 148 124
+ 172 173 226 230 180 9 187 13 0 137 200 137 30 148 124 139 14 123
+ 28 199 6 148 124 123 0 142 195 140 200 144 230 3 231 4 238 239 81
14 22 30 6 90 23 31 7 243 164 243 165 243 102 165 195 249 253 251
170 171 15 203 72 15 200 73 15 202 102 15 71 195 15 66 194 73 15
- 68 210 15 199 11 72 15 199 11 15 130 6 0 0 0 15 5 15 7 134 124 72
- 101 108 108 111 32 87 111 114 108 100 33 32 0 0 0 85 170 64 226 1
- 0 67 104 120 0 0 0 230 130 217 250 11 0))
+ 68 210 15 176 209 102 15 177 209 15 177 215 76 15 177 209 15 199
+ 11 72 15 199 11 15 130 6 0 0 0 15 5 15 7 148 124 72 101 108 108
+ 111 32 87 111 114 108 100 33 32 0 0 0 85 170 64 226 1 0 67 104 120
+ 0 0 0 230 130 217 250 11 0))

(defparameter *address-asm*
'((org #x7c00)

Modified: trunk/cc/x86-64-syntax.lisp
==============================================================================
--- trunk/cc/x86-64-syntax.lisp (original)
+++ trunk/cc/x86-64-syntax.lisp Tue Mar 3 05:25:10 2009
@@ -97,6 +97,9 @@
((cmovcc r16 (r/m16 r16 m)) . (o16 #x0f (+ #x40 cc) /r))
((cmovcc r32 (r/m32 r32 m)) . (o32 #x0f (+ #x40 cc) /r))
,@(arith-syntax-1 'cmp nil)
+ ((cmpxchg (r/m8 r8 m) r8) . (#x0f #xb0 /r))
+ ((cmpxchg (r/m16 r16 m) r16) . (o16 #x0f #xb1 /r))
+ ((cmpxchg (r/m32 r32 m) r32) . (o32 #x0f #xb1 /r))
((cmpxchg8b m) . (#x0f #xc7 /1))
((dec (r/m8 r8)) . (#xfe /1))
((dec byte m) . (#xfe /1))
@@ -194,6 +197,7 @@
,@(arith-syntax-1 'and t)
((bswap r64) . (#x0f (+ #xc8 r)))
((cmovcc r64 (r/m64 r64 m)) . (#x0f (+ #x40 cc) /r))
+ ((cmpxchg (r/m64 r64 m) r64) . (#x0f #xb1 /r))
((cmpxchg16b m) . (#x0f #xc7 /1))
,@(arith-syntax-1 'cmp t)
((dec (r/m64 r64)) . (#xff /1))

Modified: wiki/AssemblyX64C.wiki
==============================================================================
--- wiki/AssemblyX64C.wiki (original)
+++ wiki/AssemblyX64C.wiki Tue Mar 3 05:25:10 2009
@@ -53,6 +53,17 @@

--------

+
+= cmpxchg: Compare and Exchange =
+
+|| Instruction || Opcode || 64-Bit Mode || 16/32-Bit Mode ||
Description ||
+|| cmpxchg r/m8 r8 || 0F B0 /r || Valid || Valid |
| ||
+|| cmpxchg r/m16 r16 || o16 0F B1 /r || Valid || Valid |
| ||
+|| cmpxchg r/m32 r32 || o32 0F B1 /r || Valid || Valid |
| ||
+|| cmpxchg r/m64 r64 || 0F B1 /r || Valid || ~~N.E.~~ |
| ||
+
+--------
+
= cmpxchg8b/cmpxchg16b: Compare and Exchange Bytes =

|| Instruction || Opcode || 64-Bit Mode || 16/32-Bit Mode ||
Description ||

Reply all
Reply to author
Forward
0 new messages