| 1 |
Ddoc |
|---|
| 2 |
|
|---|
| 3 |
$(SPEC_S D x86 Inline Assembler, |
|---|
| 4 |
|
|---|
| 5 |
<a href="http://www.digitalmars.com/gift/index.html" title="Gift Shop" target="_top"> |
|---|
| 6 |
<img src="d5.gif" border=0 align=right alt="Some Assembly Required" width=284 height=186> |
|---|
| 7 |
</a> |
|---|
| 8 |
|
|---|
| 9 |
$(P D, being a systems programming language, provides an inline |
|---|
| 10 |
assembler. |
|---|
| 11 |
The inline assembler is standardized for D implementations across |
|---|
| 12 |
the same CPU family, for example, the Intel Pentium inline assembler |
|---|
| 13 |
for a Win32 D compiler will be syntax compatible with the inline |
|---|
| 14 |
assembler for Linux running on an Intel Pentium. |
|---|
| 15 |
) |
|---|
| 16 |
|
|---|
| 17 |
$(P Implementations of D on different architectures, however, are |
|---|
| 18 |
free to innovate upon the memory model, function call/return conventions, |
|---|
| 19 |
argument passing conventions, etc. |
|---|
| 20 |
) |
|---|
| 21 |
|
|---|
| 22 |
$(P This document describes the x86 implementation of the inline |
|---|
| 23 |
assembler. |
|---|
| 24 |
) |
|---|
| 25 |
|
|---|
| 26 |
$(GRAMMAR |
|---|
| 27 |
$(GNAME AsmInstruction): |
|---|
| 28 |
$(I Identifier) $(B :) $(I AsmInstruction) |
|---|
| 29 |
$(B align) $(GLINK IntegerExpression) |
|---|
| 30 |
$(B even) |
|---|
| 31 |
$(B naked) |
|---|
| 32 |
$(B db) $(I Operands) |
|---|
| 33 |
$(B ds) $(I Operands) |
|---|
| 34 |
$(B di) $(I Operands) |
|---|
| 35 |
$(B dl) $(I Operands) |
|---|
| 36 |
$(B df) $(I Operands) |
|---|
| 37 |
$(B dd) $(I Operands) |
|---|
| 38 |
$(B de) $(I Operands) |
|---|
| 39 |
$(I Opcode) |
|---|
| 40 |
$(I Opcode Operands) |
|---|
| 41 |
|
|---|
| 42 |
$(GNAME Operands): |
|---|
| 43 |
$(I Operand) |
|---|
| 44 |
$(I Operand) $(B ,) $(I Operands) |
|---|
| 45 |
) |
|---|
| 46 |
|
|---|
| 47 |
<h2>Labels</h2> |
|---|
| 48 |
|
|---|
| 49 |
$(P Assembler instructions can be labeled just like other statements. |
|---|
| 50 |
They can be the target of goto statements. |
|---|
| 51 |
For example: |
|---|
| 52 |
) |
|---|
| 53 |
|
|---|
| 54 |
-------------- |
|---|
| 55 |
void *pc; |
|---|
| 56 |
asm |
|---|
| 57 |
{ |
|---|
| 58 |
call L1 ; |
|---|
| 59 |
L1: ; |
|---|
| 60 |
pop EBX ; |
|---|
| 61 |
mov pc[EBP],EBX ; // pc now points to code at L1 |
|---|
| 62 |
} |
|---|
| 63 |
-------------- |
|---|
| 64 |
|
|---|
| 65 |
<h2>align $(I IntegerExpression)</h2> |
|---|
| 66 |
|
|---|
| 67 |
$(GRAMMAR |
|---|
| 68 |
$(GNAME IntegerExpression): |
|---|
| 69 |
$(LINK2 lex.html#IntegerLiteral, $(I IntegerLiteral)) |
|---|
| 70 |
$(I Identifier) |
|---|
| 71 |
) |
|---|
| 72 |
|
|---|
| 73 |
$(P Causes the assembler to emit NOP instructions to align the next |
|---|
| 74 |
assembler instruction on an $(I IntegerExpression) boundary. |
|---|
| 75 |
$(I IntegerExpression) must evaluate at compile time to an integer that is |
|---|
| 76 |
a power of 2. |
|---|
| 77 |
) |
|---|
| 78 |
|
|---|
| 79 |
$(P Aligning the start of a loop body can sometimes have a dramatic |
|---|
| 80 |
effect on the execution speed. |
|---|
| 81 |
) |
|---|
| 82 |
|
|---|
| 83 |
<h2>even</h2> |
|---|
| 84 |
|
|---|
| 85 |
$(P Causes the assembler to emit NOP instructions to align the next |
|---|
| 86 |
assembler instruction on an even boundary. |
|---|
| 87 |
) |
|---|
| 88 |
|
|---|
| 89 |
<h2>naked</h2> |
|---|
| 90 |
|
|---|
| 91 |
$(P Causes the compiler to not generate the function prolog and epilog |
|---|
| 92 |
sequences. This means such is the responsibility of inline |
|---|
| 93 |
assembly programmer, and is normally used when the entire function |
|---|
| 94 |
is to be written in assembler. |
|---|
| 95 |
) |
|---|
| 96 |
|
|---|
| 97 |
<h2>db, ds, di, dl, df, dd, de</h2> |
|---|
| 98 |
|
|---|
| 99 |
These pseudo ops are for inserting raw data directly into |
|---|
| 100 |
the code. |
|---|
| 101 |
$(B db) is for bytes, |
|---|
| 102 |
$(B ds) is for 16 bit words, |
|---|
| 103 |
$(B di) is for 32 bit words, |
|---|
| 104 |
$(B dl) is for 64 bit words, |
|---|
| 105 |
$(B df) is for 32 bit floats, |
|---|
| 106 |
$(B dd) is for 64 bit doubles, |
|---|
| 107 |
and $(B de) is for 80 bit extended reals. |
|---|
| 108 |
Each can have multiple operands. |
|---|
| 109 |
If an operand is a string literal, it is as if there were $(I length) |
|---|
| 110 |
operands, where $(I length) is the number of characters in the string. |
|---|
| 111 |
One character is used per operand. |
|---|
| 112 |
For example: |
|---|
| 113 |
|
|---|
| 114 |
-------------- |
|---|
| 115 |
asm |
|---|
| 116 |
{ |
|---|
| 117 |
db 5,6,0x83; // insert bytes 0x05, 0x06, and 0x83 into code |
|---|
| 118 |
ds 0x1234; // insert bytes 0x34, 0x12 |
|---|
| 119 |
di 0x1234; // insert bytes 0x34, 0x12, 0x00, 0x00 |
|---|
| 120 |
dl 0x1234; // insert bytes 0x34, 0x12, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 |
|---|
| 121 |
df 1.234; // insert float 1.234 |
|---|
| 122 |
dd 1.234; // insert double 1.234 |
|---|
| 123 |
de 1.234; // insert real 1.234 |
|---|
| 124 |
db "abc"; // insert bytes 0x61, 0x62, and 0x63 |
|---|
| 125 |
ds "abc"; // insert bytes 0x61, 0x00, 0x62, 0x00, 0x63, 0x00 |
|---|
| 126 |
} |
|---|
| 127 |
-------------- |
|---|
| 128 |
|
|---|
| 129 |
<h2>Opcodes</h2> |
|---|
| 130 |
|
|---|
| 131 |
A list of supported opcodes is at the end. |
|---|
| 132 |
<p> |
|---|
| 133 |
|
|---|
| 134 |
The following registers are supported. Register names |
|---|
| 135 |
are always in upper case. |
|---|
| 136 |
|
|---|
| 137 |
$(GRAMMAR |
|---|
| 138 |
$(GNAME Register): |
|---|
| 139 |
$(B AL) $(B AH) $(B AX) $(B EAX) |
|---|
| 140 |
$(B BL) $(B BH) $(B BX) $(B EBX) |
|---|
| 141 |
$(B CL) $(B CH) $(B CX) $(B ECX) |
|---|
| 142 |
$(B DL) $(B DH) $(B DX) $(B EDX) |
|---|
| 143 |
$(B BP) $(B EBP) |
|---|
| 144 |
$(B SP) $(B ESP) |
|---|
| 145 |
$(B DI) $(B EDI) |
|---|
| 146 |
$(B SI) $(B ESI) |
|---|
| 147 |
$(B ES) $(B CS) $(B SS) $(B DS) $(B GS) $(B FS) |
|---|
| 148 |
$(B CR0) $(B CR2) $(B CR3) $(B CR4) |
|---|
| 149 |
$(B DR0) $(B DR1) $(B DR2) $(B DR3) $(B DR6) $(B DR7) |
|---|
| 150 |
$(B TR3) $(B TR4) $(B TR5) $(B TR6) $(B TR7) |
|---|
| 151 |
$(B ST) |
|---|
| 152 |
$(B ST(0)) $(B ST(1)) $(B ST(2)) $(B ST(3)) $(B ST(4)) $(B ST(5)) $(B ST(6)) $(B ST(7)) |
|---|
| 153 |
$(B MM0) $(B MM1) $(B MM2) $(B MM3) $(B MM4) $(B MM5) $(B MM6) $(B MM7) |
|---|
| 154 |
$(B XMM0) $(B XMM1) $(B XMM2) $(B XMM3) $(B XMM4) $(B XMM5) $(B XMM6) $(B XMM7) |
|---|
| 155 |
) |
|---|
| 156 |
|
|---|
| 157 |
<h3>Special Cases</h3> |
|---|
| 158 |
|
|---|
| 159 |
$(DL |
|---|
| 160 |
|
|---|
| 161 |
$(DT $(B lock), $(B rep), $(B repe), $(B repne), |
|---|
| 162 |
$(B repnz), $(B repz)) |
|---|
| 163 |
$(DD These prefix instructions do not appear in the same statement |
|---|
| 164 |
as the instructions they prefix; they appear in their own statement. |
|---|
| 165 |
For example: |
|---|
| 166 |
|
|---|
| 167 |
-------------- |
|---|
| 168 |
asm |
|---|
| 169 |
{ |
|---|
| 170 |
rep ; |
|---|
| 171 |
movsb ; |
|---|
| 172 |
} |
|---|
| 173 |
-------------- |
|---|
| 174 |
) |
|---|
| 175 |
|
|---|
| 176 |
$(DT $(B pause)) |
|---|
| 177 |
$(DD This opcode is not supported by the assembler, instead use |
|---|
| 178 |
|
|---|
| 179 |
-------------- |
|---|
| 180 |
{ |
|---|
| 181 |
rep ; |
|---|
| 182 |
nop ; |
|---|
| 183 |
} |
|---|
| 184 |
-------------- |
|---|
| 185 |
|
|---|
| 186 |
which produces the same result. |
|---|
| 187 |
) |
|---|
| 188 |
|
|---|
| 189 |
$(DT $(B floating point ops)) |
|---|
| 190 |
$(DD Use the two operand form of the instruction format; |
|---|
| 191 |
|
|---|
| 192 |
-------------- |
|---|
| 193 |
fdiv ST(1); // wrong |
|---|
| 194 |
fmul ST; // wrong |
|---|
| 195 |
fdiv ST,ST(1); // right |
|---|
| 196 |
fmul ST,ST(0); // right |
|---|
| 197 |
-------------- |
|---|
| 198 |
) |
|---|
| 199 |
) |
|---|
| 200 |
|
|---|
| 201 |
<h2>Operands</h2> |
|---|
| 202 |
|
|---|
| 203 |
$(GRAMMAR |
|---|
| 204 |
$(GNAME Operand): |
|---|
| 205 |
$(I AsmExp) |
|---|
| 206 |
|
|---|
| 207 |
$(GNAME AsmExp): |
|---|
| 208 |
$(I AsmLogOrExp) |
|---|
| 209 |
$(I AsmLogOrExp) $(B ?) $(I AsmExp) $(B :) $(I AsmExp) |
|---|
| 210 |
|
|---|
| 211 |
$(GNAME AsmLogOrExp): |
|---|
| 212 |
$(I AsmLogAndExp) |
|---|
| 213 |
$(I AsmLogAndExp) $(B ||) $(I AsmLogAndExp) |
|---|
| 214 |
|
|---|
| 215 |
$(GNAME AsmLogAndExp): |
|---|
| 216 |
$(I AsmOrExp) |
|---|
| 217 |
$(I AsmOrExp) $(B &&) $(I AsmOrExp) |
|---|
| 218 |
|
|---|
| 219 |
$(GNAME AsmOrExp): |
|---|
| 220 |
$(I AsmXorExp) |
|---|
| 221 |
$(I AsmXorExp) $(B |) $(I AsmXorExp) |
|---|
| 222 |
|
|---|
| 223 |
$(GNAME AsmXorExp): |
|---|
| 224 |
$(I AsmAndExp) |
|---|
| 225 |
$(I AsmAndExp) $(B ^) $(I AsmAndExp) |
|---|
| 226 |
|
|---|
| 227 |
$(GNAME AsmAndExp): |
|---|
| 228 |
$(I AsmEqualExp) |
|---|
| 229 |
$(I AsmEqualExp) $(B &) $(I AsmEqualExp) |
|---|
| 230 |
|
|---|
| 231 |
$(GNAME AsmEqualExp): |
|---|
| 232 |
$(I AsmRelExp) |
|---|
| 233 |
$(I AsmRelExp) $(B ==) $(I AsmRelExp) |
|---|
| 234 |
$(I AsmRelExp) $(B !=) $(I AsmRelExp) |
|---|
| 235 |
|
|---|
| 236 |
$(GNAME AsmRelExp): |
|---|
| 237 |
$(I AsmShiftExp) |
|---|
| 238 |
$(I AsmShiftExp) $(B <) $(I AsmShiftExp) |
|---|
| 239 |
$(I AsmShiftExp) $(B <=) $(I AsmShiftExp) |
|---|
| 240 |
$(I AsmShiftExp) $(B >) $(I AsmShiftExp) |
|---|
| 241 |
$(I AsmShiftExp) $(B >=) $(I AsmShiftExp) |
|---|
| 242 |
|
|---|
| 243 |
$(GNAME AsmShiftExp): |
|---|
| 244 |
$(I AsmAddExp) |
|---|
| 245 |
$(I AsmAddExp) $(B <<) $(I AsmAddExp) |
|---|
| 246 |
$(I AsmAddExp) $(B >>) $(I AsmAddExp) |
|---|
| 247 |
$(I AsmAddExp) $(B >>>) $(I AsmAddExp) |
|---|
| 248 |
|
|---|
| 249 |
$(GNAME AsmAddExp): |
|---|
| 250 |
$(I AsmMulExp) |
|---|
| 251 |
$(I AsmMulExp) $(B +) $(I AsmMulExp) |
|---|
| 252 |
$(I AsmMulExp) $(B -) $(I AsmMulExp) |
|---|
| 253 |
|
|---|
| 254 |
$(GNAME AsmMulExp): |
|---|
| 255 |
$(I AsmBrExp) |
|---|
| 256 |
$(I AsmBrExp) $(B *) $(I AsmBrExp) |
|---|
| 257 |
$(I AsmBrExp) $(B /) $(I AsmBrExp) |
|---|
| 258 |
$(I AsmBrExp) $(B %) $(I AsmBrExp) |
|---|
| 259 |
|
|---|
| 260 |
$(GNAME AsmBrExp): |
|---|
| 261 |
$(I AsmUnaExp) |
|---|
| 262 |
$(I AsmBrExp) $(B [) $(I AsmExp) $(B ]) |
|---|
| 263 |
|
|---|
| 264 |
$(GNAME AsmUnaExp): |
|---|
| 265 |
$(I AsmTypePrefix) $(I AsmExp) |
|---|
| 266 |
$(B offsetof) $(I AsmExp) |
|---|
| 267 |
$(B seg) $(I AsmExp) |
|---|
| 268 |
$(B +) $(I AsmUnaExp) |
|---|
| 269 |
$(B -) $(I AsmUnaExp) |
|---|
| 270 |
$(B !) $(I AsmUnaExp) |
|---|
| 271 |
$(B ~) $(I AsmUnaExp) |
|---|
| 272 |
$(I AsmPrimaryExp) |
|---|
| 273 |
|
|---|
| 274 |
$(GNAME AsmPrimaryExp): |
|---|
| 275 |
$(LINK2 lex.html#IntegerLiteral, $(I IntegerLiteral)) |
|---|
| 276 |
$(LINK2 lex.html#FloatLiteral, $(I FloatLiteral)) |
|---|
| 277 |
$(B __LOCAL_SIZE) |
|---|
| 278 |
$(B $) |
|---|
| 279 |
$(GLINK Register) |
|---|
| 280 |
$(I DotIdentifier) |
|---|
| 281 |
|
|---|
| 282 |
$(GNAME DotIdentifier): |
|---|
| 283 |
$(I Identifier) |
|---|
| 284 |
$(I Identifier) $(B .) $(I DotIdentifier) |
|---|
| 285 |
) |
|---|
| 286 |
|
|---|
| 287 |
$(P The operand syntax more or less follows the Intel CPU documentation |
|---|
| 288 |
conventions. |
|---|
| 289 |
In particular, the convention is that for two operand instructions |
|---|
| 290 |
the source is the right operand and the destination is the left |
|---|
| 291 |
operand. |
|---|
| 292 |
The syntax differs from that of Intel's in order to be compatible |
|---|
| 293 |
with the D language tokenizer and to simplify parsing. |
|---|
| 294 |
) |
|---|
| 295 |
|
|---|
| 296 |
$(P The $(B seg) means load the segment number that the symbol is |
|---|
| 297 |
in. This is not relevant for flat model code. |
|---|
| 298 |
Instead, do a move from the relevant segment register. |
|---|
| 299 |
) |
|---|
| 300 |
|
|---|
| 301 |
<h3>Operand Types</h3> |
|---|
| 302 |
|
|---|
| 303 |
$(GRAMMAR |
|---|
| 304 |
$(GNAME AsmTypePrefix): |
|---|
| 305 |
$(B near ptr) |
|---|
| 306 |
$(B far ptr) |
|---|
| 307 |
$(B byte ptr) |
|---|
| 308 |
$(B short ptr) |
|---|
| 309 |
$(B int ptr) |
|---|
| 310 |
$(B word ptr) |
|---|
| 311 |
$(B dword ptr) |
|---|
| 312 |
$(B qword ptr) |
|---|
| 313 |
$(B float ptr) |
|---|
| 314 |
$(B double ptr) |
|---|
| 315 |
$(B real ptr) |
|---|
| 316 |
) |
|---|
| 317 |
|
|---|
| 318 |
$(P In cases where the operand size is ambiguous, as in:) |
|---|
| 319 |
|
|---|
| 320 |
-------------- |
|---|
| 321 |
add [EAX],3 ; |
|---|
| 322 |
-------------- |
|---|
| 323 |
|
|---|
| 324 |
$(P it can be disambiguated by using an $(I AsmTypePrefix):) |
|---|
| 325 |
|
|---|
| 326 |
-------------- |
|---|
| 327 |
add byte ptr [EAX],3 ; |
|---|
| 328 |
add int ptr [EAX],7 ; |
|---|
| 329 |
-------------- |
|---|
| 330 |
|
|---|
| 331 |
$(P $(B far ptr) is not relevant for flat model code. |
|---|
| 332 |
) |
|---|
| 333 |
|
|---|
| 334 |
<h3>Struct/Union/Class Member Offsets</h3> |
|---|
| 335 |
|
|---|
| 336 |
$(P To access members of an aggregate, given a pointer to the aggregate |
|---|
| 337 |
is in a register, use the qualified name of the member: |
|---|
| 338 |
) |
|---|
| 339 |
|
|---|
| 340 |
-------------- |
|---|
| 341 |
struct Foo { int a,b,c; } |
|---|
| 342 |
int bar(Foo *f) |
|---|
| 343 |
{ |
|---|
| 344 |
asm |
|---|
| 345 |
{ mov EBX,f ; |
|---|
| 346 |
mov EAX,Foo.b[EBX] ; |
|---|
| 347 |
} |
|---|
| 348 |
} |
|---|
| 349 |
-------------- |
|---|
| 350 |
|
|---|
| 351 |
<h3>Stack Variables</h3> |
|---|
| 352 |
|
|---|
| 353 |
$(P Stack variables (variables local to a function and allocated |
|---|
| 354 |
on the stack) are accessed via the name of the variable indexed |
|---|
| 355 |
by EBP: |
|---|
| 356 |
) |
|---|
| 357 |
|
|---|
| 358 |
--- |
|---|
| 359 |
int foo(int x) |
|---|
| 360 |
{ |
|---|
| 361 |
asm |
|---|
| 362 |
{ |
|---|
| 363 |
mov EAX,x[EBP] ; // loads value of parameter x into EAX |
|---|
| 364 |
mov EAX,x ; // does the same thing |
|---|
| 365 |
} |
|---|
| 366 |
} |
|---|
| 367 |
--- |
|---|
| 368 |
|
|---|
| 369 |
$(P If the [EBP] is omitted, it is assumed for local variables. |
|---|
| 370 |
If $(B naked) is used, this no longer holds. |
|---|
| 371 |
) |
|---|
| 372 |
|
|---|
| 373 |
<h3>Special Symbols</h3> |
|---|
| 374 |
|
|---|
| 375 |
$(DL |
|---|
| 376 |
|
|---|
| 377 |
$(DT $(B $)) |
|---|
| 378 |
$(DD Represents the program counter of the start of the next |
|---|
| 379 |
instruction. So, |
|---|
| 380 |
|
|---|
| 381 |
-------------- |
|---|
| 382 |
jmp $ ; |
|---|
| 383 |
-------------- |
|---|
| 384 |
|
|---|
| 385 |
branches to the instruction following the jmp instruction. |
|---|
| 386 |
The $(B $) can only appear as the target of a jmp or call |
|---|
| 387 |
instruction. |
|---|
| 388 |
) |
|---|
| 389 |
|
|---|
| 390 |
$(DT $(B __LOCAL_SIZE)) |
|---|
| 391 |
$(DD This gets replaced by the number of local bytes in the local |
|---|
| 392 |
stack frame. It is most handy when the $(B naked) is invoked |
|---|
| 393 |
and a custom stack frame is programmed. |
|---|
| 394 |
) |
|---|
| 395 |
|
|---|
| 396 |
) |
|---|
| 397 |
|
|---|
| 398 |
<h2>Opcodes Supported</h2> |
|---|
| 399 |
|
|---|
| 400 |
$(TABLE1 |
|---|
| 401 |
<tr> |
|---|
| 402 |
<td>aaa</td> |
|---|
| 403 |
<td>aad</td> |
|---|
| 404 |
<td>aam</td> |
|---|
| 405 |
<td>aas</td> |
|---|
| 406 |
<td>adc</td> |
|---|
| 407 |
</tr><tr> |
|---|
| 408 |
<td>add</td> |
|---|
| 409 |
<td>addpd</td> |
|---|
| 410 |
<td>addps</td> |
|---|
| 411 |
<td>addsd</td> |
|---|
| 412 |
<td>addss</td> |
|---|
| 413 |
</tr><tr> |
|---|
| 414 |
<td>and</td> |
|---|
| 415 |
<td>andnpd</td> |
|---|
| 416 |
<td>andnps</td> |
|---|
| 417 |
<td>andpd</td> |
|---|
| 418 |
<td>andps</td> |
|---|
| 419 |
</tr><tr> |
|---|
| 420 |
<td>arpl</td> |
|---|
| 421 |
<td>bound</td> |
|---|
| 422 |
<td>bsf</td> |
|---|
| 423 |
<td>bsr</td> |
|---|
| 424 |
<td>bswap</td> |
|---|
| 425 |
</tr><tr> |
|---|
| 426 |
<td>bt</td> |
|---|
| 427 |
<td>btc</td> |
|---|
| 428 |
<td>btr</td> |
|---|
| 429 |
<td>bts</td> |
|---|
| 430 |
<td>call</td> |
|---|
| 431 |
</tr><tr> |
|---|
| 432 |
<td>cbw</td> |
|---|
| 433 |
<td>cdq</td> |
|---|
| 434 |
<td>clc</td> |
|---|
| 435 |
<td>cld</td> |
|---|
| 436 |
<td>clflush</td> |
|---|
| 437 |
</tr><tr> |
|---|
| 438 |
<td>cli</td> |
|---|
| 439 |
<td>clts</td> |
|---|
| 440 |
<td>cmc</td> |
|---|
| 441 |
<td>cmova</td> |
|---|
| 442 |
<td>cmovae</td> |
|---|
| 443 |
</tr><tr> |
|---|
| 444 |
<td>cmovb</td> |
|---|
| 445 |
<td>cmovbe</td> |
|---|
| 446 |
<td>cmovc</td> |
|---|
| 447 |
<td>cmove</td> |
|---|
| 448 |
<td>cmovg</td> |
|---|
| 449 |
</tr><tr> |
|---|
| 450 |
<td>cmovge</td> |
|---|
| 451 |
<td>cmovl</td> |
|---|
| 452 |
<td>cmovle</td> |
|---|
| 453 |
<td>cmovna</td> |
|---|
| 454 |
<td>cmovnae</td> |
|---|
| 455 |
</tr><tr> |
|---|
| 456 |
<td>cmovnb</td> |
|---|
| 457 |
<td>cmovnbe</td> |
|---|
| 458 |
<td>cmovnc</td> |
|---|
| 459 |
<td>cmovne</td> |
|---|
| 460 |
<td>cmovng</td> |
|---|
| 461 |
</tr><tr> |
|---|
| 462 |
<td>cmovnge</td> |
|---|
| 463 |
<td>cmovnl</td> |
|---|
| 464 |
<td>cmovnle</td> |
|---|
| 465 |
<td>cmovno</td> |
|---|
| 466 |
<td>cmovnp</td> |
|---|
| 467 |
</tr><tr> |
|---|
| 468 |
<td>cmovns</td> |
|---|
| 469 |
<td>cmovnz</td> |
|---|
| 470 |
<td>cmovo</td> |
|---|
| 471 |
<td>cmovp</td> |
|---|
| 472 |
<td>cmovpe</td> |
|---|
| 473 |
</tr><tr> |
|---|
| 474 |
<td>cmovpo</td> |
|---|
| 475 |
<td>cmovs</td> |
|---|
| 476 |
<td>cmovz</td> |
|---|
| 477 |
<td>cmp</td> |
|---|
| 478 |
<td>cmppd</td> |
|---|
| 479 |
</tr><tr> |
|---|
| 480 |
<td>cmpps</td> |
|---|
| 481 |
<td>cmps</td> |
|---|
| 482 |
<td>cmpsb</td> |
|---|
| 483 |
<td>cmpsd</td> |
|---|
| 484 |
<td>cmpss</td> |
|---|
| 485 |
</tr><tr> |
|---|
| 486 |
<td>cmpsw</td> |
|---|
| 487 |
<td>cmpxch8b</td> |
|---|
| 488 |
<td>cmpxchg</td> |
|---|
| 489 |
<td>comisd</td> |
|---|
| 490 |
<td>comiss</td> |
|---|
| 491 |
</tr><tr> |
|---|
| 492 |
<td>cpuid</td> |
|---|
| 493 |
<td>cvtdq2pd</td> |
|---|
| 494 |
<td>cvtdq2ps</td> |
|---|
| 495 |
<td>cvtpd2dq</td> |
|---|
| 496 |
<td>cvtpd2pi</td> |
|---|
| 497 |
</tr><tr> |
|---|
| 498 |
<td>cvtpd2ps</td> |
|---|
| 499 |
<td>cvtpi2pd</td> |
|---|
| 500 |
<td>cvtpi2ps</td> |
|---|
| 501 |
<td>cvtps2dq</td> |
|---|
| 502 |
<td>cvtps2pd</td> |
|---|
| 503 |
</tr><tr> |
|---|
| 504 |
<td>cvtps2pi</td> |
|---|
| 505 |
<td>cvtsd2si</td> |
|---|
| 506 |
<td>cvtsd2ss</td> |
|---|
| 507 |
<td>cvtsi2sd</td> |
|---|
| 508 |
<td>cvtsi2ss</td> |
|---|
| 509 |
</tr><tr> |
|---|
| 510 |
<td>cvtss2sd</td> |
|---|
| 511 |
<td>cvtss2si</td> |
|---|
| 512 |
<td>cvttpd2dq</td> |
|---|
| 513 |
<td>cvttpd2pi</td> |
|---|
| 514 |
<td>cvttps2dq</td> |
|---|
| 515 |
</tr><tr> |
|---|
| 516 |
<td>cvttps2pi</td> |
|---|
| 517 |
<td>cvttsd2si</td> |
|---|
| 518 |
<td>cvttss2si</td> |
|---|
| 519 |
<td>cwd</td> |
|---|
| 520 |
<td>cwde</td> |
|---|
| 521 |
</tr><tr> |
|---|
| 522 |
<td>da</td> |
|---|
| 523 |
<td>daa</td> |
|---|
| 524 |
<td>das</td> |
|---|
| 525 |
<td>db</td> |
|---|
| 526 |
<td>dd</td> |
|---|
| 527 |
</tr><tr> |
|---|
| 528 |
<td>de</td> |
|---|
| 529 |
<td>dec</td> |
|---|
| 530 |
<td>df</td> |
|---|
| 531 |
<td>di</td> |
|---|
| 532 |
<td>div</td> |
|---|
| 533 |
</tr><tr> |
|---|
| 534 |
<td>divpd</td> |
|---|
| 535 |
<td>divps</td> |
|---|
| 536 |
<td>divsd</td> |
|---|
| 537 |
<td>divss</td> |
|---|
| 538 |
<td>dl</td> |
|---|
| 539 |
</tr><tr> |
|---|
| 540 |
<td>dq</td> |
|---|
| 541 |
<td>ds</td> |
|---|
| 542 |
<td>dt</td> |
|---|
| 543 |
<td>dw</td> |
|---|
| 544 |
<td>emms</td> |
|---|
| 545 |
</tr><tr> |
|---|
| 546 |
<td>enter</td> |
|---|
| 547 |
<td>f2xm1</td> |
|---|
| 548 |
<td>fabs</td> |
|---|
| 549 |
<td>fadd</td> |
|---|
| 550 |
<td>faddp</td> |
|---|
| 551 |
</tr><tr> |
|---|
| 552 |
<td>fbld</td> |
|---|
| 553 |
<td>fbstp</td> |
|---|
| 554 |
<td>fchs</td> |
|---|
| 555 |
<td>fclex</td> |
|---|
| 556 |
<td>fcmovb</td> |
|---|
| 557 |
</tr><tr> |
|---|
| 558 |
<td>fcmovbe</td> |
|---|
| 559 |
<td>fcmove</td> |
|---|
| 560 |
<td>fcmovnb</td> |
|---|
| 561 |
<td>fcmovnbe</td> |
|---|
| 562 |
<td>fcmovne</td> |
|---|
| 563 |
</tr><tr> |
|---|
| 564 |
<td>fcmovnu</td> |
|---|
| 565 |
<td>fcmovu</td> |
|---|
| 566 |
<td>fcom</td> |
|---|
| 567 |
<td>fcomi</td> |
|---|
| 568 |
<td>fcomip</td> |
|---|
| 569 |
</tr><tr> |
|---|
| 570 |
<td>fcomp</td> |
|---|
| 571 |
<td>fcompp</td> |
|---|
| 572 |
<td>fcos</td> |
|---|
| 573 |
<td>fdecstp</td> |
|---|
| 574 |
<td>fdisi</td> |
|---|
| 575 |
</tr><tr> |
|---|
| 576 |
<td>fdiv</td> |
|---|
| 577 |
<td>fdivp</td> |
|---|
| 578 |
<td>fdivr</td> |
|---|
| 579 |
<td>fdivrp</td> |
|---|
| 580 |
<td>feni</td> |
|---|
| 581 |
</tr><tr> |
|---|
| 582 |
<td>ffree</td> |
|---|
| 583 |
<td>fiadd</td> |
|---|
| 584 |
<td>ficom</td> |
|---|
| 585 |
<td>ficomp</td> |
|---|
| 586 |
<td>fidiv</td> |
|---|
| 587 |
</tr><tr> |
|---|
| 588 |
<td>fidivr</td> |
|---|
| 589 |
<td>fild</td> |
|---|
| 590 |
<td>fimul</td> |
|---|
| 591 |
<td>fincstp</td> |
|---|
| 592 |
<td>finit</td> |
|---|
| 593 |
</tr><tr> |
|---|
| 594 |
<td>fist</td> |
|---|
| 595 |
<td>fistp</td> |
|---|
| 596 |
<td>fisub</td> |
|---|
| 597 |
<td>fisubr</td> |
|---|
| 598 |
<td>fld</td> |
|---|
| 599 |
</tr><tr> |
|---|
| 600 |
<td>fld1</td> |
|---|
| 601 |
<td>fldcw</td> |
|---|
| 602 |
<td>fldenv</td> |
|---|
| 603 |
<td>fldl2e</td> |
|---|
| 604 |
<td>fldl2t</td> |
|---|
| 605 |
</tr><tr> |
|---|
| 606 |
<td>fldlg2</td> |
|---|
| 607 |
<td>fldln2</td> |
|---|
| 608 |
<td>fldpi</td> |
|---|
| 609 |
<td>fldz</td> |
|---|
| 610 |
<td>fmul</td> |
|---|
| 611 |
</tr><tr> |
|---|
| 612 |
<td>fmulp</td> |
|---|
| 613 |
<td>fnclex</td> |
|---|
| 614 |
<td>fndisi</td> |
|---|
| 615 |
<td>fneni</td> |
|---|
| 616 |
<td>fninit</td> |
|---|
| 617 |
</tr><tr> |
|---|
| 618 |
<td>fnop</td> |
|---|
| 619 |
<td>fnsave</td> |
|---|
| 620 |
<td>fnstcw</td> |
|---|
| 621 |
<td>fnstenv</td> |
|---|
| 622 |
<td>fnstsw</td> |
|---|
| 623 |
</tr><tr> |
|---|
| 624 |
<td>fpatan</td> |
|---|
| 625 |
<td>fprem</td> |
|---|
| 626 |
<td>fprem1</td> |
|---|
| 627 |
<td>fptan</td> |
|---|
| 628 |
<td>frndint</td> |
|---|
| 629 |
</tr><tr> |
|---|
| 630 |
<td>frstor</td> |
|---|
| 631 |
<td>fsave</td> |
|---|
| 632 |
<td>fscale</td> |
|---|
| 633 |
<td>fsetpm</td> |
|---|
| 634 |
<td>fsin</td> |
|---|
| 635 |
</tr><tr> |
|---|
| 636 |
<td>fsincos</td> |
|---|
| 637 |
<td>fsqrt</td> |
|---|
| 638 |
<td>fst</td> |
|---|
| 639 |
<td>fstcw</td> |
|---|
| 640 |
<td>fstenv</td> |
|---|
| 641 |
</tr><tr> |
|---|
| 642 |
<td>fstp</td> |
|---|
| 643 |
<td>fstsw</td> |
|---|
| 644 |
<td>fsub</td> |
|---|
| 645 |
<td>fsubp</td> |
|---|
| 646 |
<td>fsubr</td> |
|---|
| 647 |
</tr><tr> |
|---|
| 648 |
<td>fsubrp</td> |
|---|
| 649 |
<td>ftst</td> |
|---|
| 650 |
<td>fucom</td> |
|---|
| 651 |
<td>fucomi</td> |
|---|
| 652 |
<td>fucomip</td> |
|---|
| 653 |
</tr><tr> |
|---|
| 654 |
<td>fucomp</td> |
|---|
| 655 |
<td>fucompp</td> |
|---|
| 656 |
<td>fwait</td> |
|---|
| 657 |
<td>fxam</td> |
|---|
| 658 |
<td>fxch</td> |
|---|
| 659 |
</tr><tr> |
|---|
| 660 |
<td>fxrstor</td> |
|---|
| 661 |
<td>fxsave</td> |
|---|
| 662 |
<td>fxtract</td> |
|---|
| 663 |
<td>fyl2x</td> |
|---|
| 664 |
<td>fyl2xp1</td> |
|---|
| 665 |
</tr><tr> |
|---|
| 666 |
<td>hlt</td> |
|---|
| 667 |
<td>idiv</td> |
|---|
| 668 |
<td>imul</td> |
|---|
| 669 |
<td>in</td> |
|---|
| 670 |
<td>inc</td> |
|---|
| 671 |
</tr><tr> |
|---|
| 672 |
<td>ins</td> |
|---|
| 673 |
<td>insb</td> |
|---|
| 674 |
<td>insd</td> |
|---|
| 675 |
<td>insw</td> |
|---|
| 676 |
<td>int</td> |
|---|
| 677 |
</tr><tr> |
|---|
| 678 |
<td>into</td> |
|---|
| 679 |
<td>invd</td> |
|---|
| 680 |
<td>invlpg</td> |
|---|
| 681 |
<td>iret</td> |
|---|
| 682 |
<td>iretd</td> |
|---|
| 683 |
</tr><tr> |
|---|
| 684 |
<td>ja</td> |
|---|
| 685 |
<td>jae</td> |
|---|
| 686 |
<td>jb</td> |
|---|
| 687 |
<td>jbe</td> |
|---|
| 688 |
<td>jc</td> |
|---|
| 689 |
</tr><tr> |
|---|
| 690 |
<td>jcxz</td> |
|---|
| 691 |
<td>je</td> |
|---|
| 692 |
<td>jecxz</td> |
|---|
| 693 |
<td>jg</td> |
|---|
| 694 |
<td>jge</td> |
|---|
| 695 |
</tr><tr> |
|---|
| 696 |
<td>jl</td> |
|---|
| 697 |
<td>jle</td> |
|---|
| 698 |
<td>jmp</td> |
|---|
| 699 |
<td>jna</td> |
|---|
| 700 |
<td>jnae</td> |
|---|
| 701 |
</tr><tr> |
|---|
| 702 |
<td>jnb</td> |
|---|
| 703 |
<td>jnbe</td> |
|---|
| 704 |
<td>jnc</td> |
|---|
| 705 |
<td>jne</td> |
|---|
| 706 |
<td>jng</td> |
|---|
| 707 |
</tr><tr> |
|---|
| 708 |
<td>jnge</td> |
|---|
| 709 |
<td>jnl</td> |
|---|
| 710 |
<td>jnle</td> |
|---|
| 711 |
<td>jno</td> |
|---|
| 712 |
<td>jnp</td> |
|---|
| 713 |
</tr><tr> |
|---|
| 714 |
<td>jns</td> |
|---|
| 715 |
<td>jnz</td> |
|---|
| 716 |
<td>jo</td> |
|---|
| 717 |
<td>jp</td> |
|---|
| 718 |
<td>jpe</td> |
|---|
| 719 |
</tr><tr> |
|---|
| 720 |
<td>jpo</td> |
|---|
| 721 |
<td>js</td> |
|---|
| 722 |
<td>jz</td> |
|---|
| 723 |
<td>lahf</td> |
|---|
| 724 |
<td>lar</td> |
|---|
| 725 |
</tr><tr> |
|---|
| 726 |
<td>ldmxcsr</td> |
|---|
| 727 |
<td>lds</td> |
|---|
| 728 |
<td>lea</td> |
|---|
| 729 |
<td>leave</td> |
|---|
| 730 |
<td>les</td> |
|---|
| 731 |
</tr><tr> |
|---|
| 732 |
<td>lfence</td> |
|---|
| 733 |
<td>lfs</td> |
|---|
| 734 |
<td>lgdt</td> |
|---|
| 735 |
<td>lgs</td> |
|---|
| 736 |
<td>lidt</td> |
|---|
| 737 |
</tr><tr> |
|---|
| 738 |
<td>lldt</td> |
|---|
| 739 |
<td>lmsw</td> |
|---|
| 740 |
<td>lock</td> |
|---|
| 741 |
<td>lods</td> |
|---|
| 742 |
<td>lodsb</td> |
|---|
| 743 |
</tr><tr> |
|---|
| 744 |
<td>lodsd</td> |
|---|
| 745 |
<td>lodsw</td> |
|---|
| 746 |
<td>loop</td> |
|---|
| 747 |
<td>loope</td> |
|---|
| 748 |
<td>loopne</td> |
|---|
| 749 |
</tr><tr> |
|---|
| 750 |
<td>loopnz</td> |
|---|
| 751 |
<td>loopz</td> |
|---|
| 752 |
<td>lsl</td> |
|---|
| 753 |
<td>lss</td> |
|---|
| 754 |
<td>ltr</td> |
|---|
| 755 |
</tr><tr> |
|---|
| 756 |
<td>maskmovdqu</td> |
|---|
| 757 |
<td>maskmovq</td> |
|---|
| 758 |
<td>maxpd</td> |
|---|
| 759 |
<td>maxps</td> |
|---|
| 760 |
<td>maxsd</td> |
|---|
| 761 |
</tr><tr> |
|---|
| 762 |
<td>maxss</td> |
|---|
| 763 |
<td>mfence</td> |
|---|
| 764 |
<td>minpd</td> |
|---|
| 765 |
<td>minps</td> |
|---|
| 766 |
<td>minsd</td> |
|---|
| 767 |
</tr><tr> |
|---|
| 768 |
<td>minss</td> |
|---|
| 769 |
<td>mov</td> |
|---|
| 770 |
<td>movapd</td> |
|---|
| 771 |
<td>movaps</td> |
|---|
| 772 |
<td>movd</td> |
|---|
| 773 |
</tr><tr> |
|---|
| 774 |
<td>movdq2q</td> |
|---|
| 775 |
<td>movdqa</td> |
|---|
| 776 |
<td>movdqu</td> |
|---|
| 777 |
<td>movhlps</td> |
|---|
| 778 |
<td>movhpd</td> |
|---|
| 779 |
</tr><tr> |
|---|
| 780 |
<td>movhps</td> |
|---|
| 781 |
<td>movlhps</td> |
|---|
| 782 |
<td>movlpd</td> |
|---|
| 783 |
<td>movlps</td> |
|---|
| 784 |
<td>movmskpd</td> |
|---|
| 785 |
</tr><tr> |
|---|
| 786 |
<td>movmskps</td> |
|---|
| 787 |
<td>movntdq</td> |
|---|
| 788 |
<td>movnti</td> |
|---|
| 789 |
<td>movntpd</td> |
|---|
| 790 |
<td>movntps</td> |
|---|
| 791 |
</tr><tr> |
|---|
| 792 |
<td>movntq</td> |
|---|
| 793 |
<td>movq</td> |
|---|
| 794 |
<td>movq2dq</td> |
|---|
| 795 |
<td>movs</td> |
|---|
| 796 |
<td>movsb</td> |
|---|
| 797 |
</tr><tr> |
|---|
| 798 |
<td>movsd</td> |
|---|
| 799 |
<td>movss</td> |
|---|
| 800 |
<td>movsw</td> |
|---|
| 801 |
<td>movsx</td> |
|---|
| 802 |
<td>movupd</td> |
|---|
| 803 |
</tr><tr> |
|---|
| 804 |
<td>movups</td> |
|---|
| 805 |
<td>movzx</td> |
|---|
| 806 |
<td>mul</td> |
|---|
| 807 |
<td>mulpd</td> |
|---|
| 808 |
<td>mulps</td> |
|---|
| 809 |
</tr><tr> |
|---|
| 810 |
<td>mulsd</td> |
|---|
| 811 |
<td>mulss</td> |
|---|
| 812 |
<td>neg</td> |
|---|
| 813 |
<td>nop</td> |
|---|
| 814 |
<td>not</td> |
|---|
| 815 |
</tr><tr> |
|---|
| 816 |
<td>or</td> |
|---|
| 817 |
<td>orpd</td> |
|---|
| 818 |
<td>orps</td> |
|---|
| 819 |
<td>out</td> |
|---|
| 820 |
<td>outs</td> |
|---|
| 821 |
</tr><tr> |
|---|
| 822 |
<td>outsb</td> |
|---|
| 823 |
<td>outsd</td> |
|---|
| 824 |
<td>outsw</td> |
|---|
| 825 |
<td>packssdw</td> |
|---|
| 826 |
<td>packsswb</td> |
|---|
| 827 |
</tr><tr> |
|---|
| 828 |
<td>packuswb</td> |
|---|
| 829 |
<td>paddb</td> |
|---|
| 830 |
<td>paddd</td> |
|---|
| 831 |
<td>paddq</td> |
|---|
| 832 |
<td>paddsb</td> |
|---|
| 833 |
</tr><tr> |
|---|
| 834 |
<td>paddsw</td> |
|---|
| 835 |
<td>paddusb</td> |
|---|
| 836 |
<td>paddusw</td> |
|---|
| 837 |
<td>paddw</td> |
|---|
| 838 |
<td>pand</td> |
|---|
| 839 |
</tr><tr> |
|---|
| 840 |
<td>pandn</td> |
|---|
| 841 |
<td>pavgb</td> |
|---|
| 842 |
<td>pavgw</td> |
|---|
| 843 |
<td>pcmpeqb</td> |
|---|
| 844 |
<td>pcmpeqd</td> |
|---|
| 845 |
</tr><tr> |
|---|
| 846 |
<td>pcmpeqw</td> |
|---|
| 847 |
<td>pcmpgtb</td> |
|---|
| 848 |
<td>pcmpgtd</td> |
|---|
| 849 |
<td>pcmpgtw</td> |
|---|
| 850 |
<td>pextrw</td> |
|---|
| 851 |
</tr><tr> |
|---|
| 852 |
<td>pinsrw</td> |
|---|
| 853 |
<td>pmaddwd</td> |
|---|
| 854 |
<td>pmaxsw</td> |
|---|
| 855 |
<td>pmaxub</td> |
|---|
| 856 |
<td>pminsw</td> |
|---|
| 857 |
</tr><tr> |
|---|
| 858 |
<td>pminub</td> |
|---|
| 859 |
<td>pmovmskb</td> |
|---|
| 860 |
<td>pmulhuw</td> |
|---|
| 861 |
<td>pmulhw</td> |
|---|
| 862 |
<td>pmullw</td> |
|---|
| 863 |
</tr><tr> |
|---|
| 864 |
<td>pmuludq</td> |
|---|
| 865 |
<td>pop</td> |
|---|
| 866 |
<td>popa</td> |
|---|
| 867 |
<td>popad</td> |
|---|
| 868 |
<td>popf</td> |
|---|
| 869 |
</tr><tr> |
|---|
| 870 |
<td>popfd</td> |
|---|
| 871 |
<td>por</td> |
|---|
| 872 |
<td>prefetchnta</td> |
|---|
| 873 |
<td>prefetcht0</td> |
|---|
| 874 |
<td>prefetcht1</td> |
|---|
| 875 |
</tr><tr> |
|---|
| 876 |
<td>prefetcht2</td> |
|---|
| 877 |
<td>psadbw</td> |
|---|
| 878 |
<td>pshufd</td> |
|---|
| 879 |
<td>pshufhw</td> |
|---|
| 880 |
<td>pshuflw</td> |
|---|
| 881 |
</tr><tr> |
|---|
| 882 |
<td>pshufw</td> |
|---|
| 883 |
<td>pslld</td> |
|---|
| 884 |
<td>pslldq</td> |
|---|
| 885 |
<td>psllq</td> |
|---|
| 886 |
<td>psllw</td> |
|---|
| 887 |
</tr><tr> |
|---|
| 888 |
<td>psrad</td> |
|---|
| 889 |
<td>psraw</td> |
|---|
| 890 |
<td>psrld</td> |
|---|
| 891 |
<td>psrldq</td> |
|---|
| 892 |
<td>psrlq</td> |
|---|
| 893 |
</tr><tr> |
|---|
| 894 |
<td>psrlw</td> |
|---|
| 895 |
<td>psubb</td> |
|---|
| 896 |
<td>psubd</td> |
|---|
| 897 |
<td>psubq</td> |
|---|
| 898 |
<td>psubsb</td> |
|---|
| 899 |
</tr><tr> |
|---|
| 900 |
<td>psubsw</td> |
|---|
| 901 |
<td>psubusb</td> |
|---|
| 902 |
<td>psubusw</td> |
|---|
| 903 |
<td>psubw</td> |
|---|
| 904 |
<td>punpckhbw</td> |
|---|
| 905 |
</tr><tr> |
|---|
| 906 |
<td>punpckhdq</td> |
|---|
| 907 |
<td>punpckhqdq</td> |
|---|
| 908 |
<td>punpckhwd</td> |
|---|
| 909 |
<td>punpcklbw</td> |
|---|
| 910 |
<td>punpckldq</td> |
|---|
| 911 |
</tr><tr> |
|---|
| 912 |
<td>punpcklqdq</td> |
|---|
| 913 |
<td>punpcklwd</td> |
|---|
| 914 |
<td>push</td> |
|---|
| 915 |
<td>pusha</td> |
|---|
| 916 |
<td>pushad</td> |
|---|
| 917 |
</tr><tr> |
|---|
| 918 |
<td>pushf</td> |
|---|
| 919 |
<td>pushfd</td> |
|---|
| 920 |
<td>pxor</td> |
|---|
| 921 |
<td>rcl</td> |
|---|
| 922 |
<td>rcpps</td> |
|---|
| 923 |
</tr><tr> |
|---|
| 924 |
<td>rcpss</td> |
|---|
| 925 |
<td>rcr</td> |
|---|
| 926 |
<td>rdmsr</td> |
|---|
| 927 |
<td>rdpmc</td> |
|---|
| 928 |
<td>rdtsc</td> |
|---|
| 929 |
</tr><tr> |
|---|
| 930 |
<td>rep</td> |
|---|
| 931 |
<td>repe</td> |
|---|
| 932 |
<td>repne</td> |
|---|
| 933 |
<td>repnz</td> |
|---|
| 934 |
<td>repz</td> |
|---|
| 935 |
</tr><tr> |
|---|
| 936 |
<td>ret</td> |
|---|
| 937 |
<td>retf</td> |
|---|
| 938 |
<td>rol</td> |
|---|
| 939 |
<td>ror</td> |
|---|
| 940 |
<td>rsm</td> |
|---|
| 941 |
</tr><tr> |
|---|
| 942 |
<td>rsqrtps</td> |
|---|
| 943 |
<td>rsqrtss</td> |
|---|
| 944 |
<td>sahf</td> |
|---|
| 945 |
<td>sal</td> |
|---|
| 946 |
<td>sar</td> |
|---|
| 947 |
</tr><tr> |
|---|
| 948 |
<td>sbb</td> |
|---|
| 949 |
<td>scas</td> |
|---|
| 950 |
<td>scasb</td> |
|---|
| 951 |
<td>scasd</td> |
|---|
| 952 |
<td>scasw</td> |
|---|
| 953 |
</tr><tr> |
|---|
| 954 |
<td>seta</td> |
|---|
| 955 |
<td>setae</td> |
|---|
| 956 |
<td>setb</td> |
|---|
| 957 |
<td>setbe</td> |
|---|
| 958 |
<td>setc</td> |
|---|
| 959 |
</tr><tr> |
|---|
| 960 |
<td>sete</td> |
|---|
| 961 |
<td>setg</td> |
|---|
| 962 |
<td>setge</td> |
|---|
| 963 |
<td>setl</td> |
|---|
| 964 |
<td>setle</td> |
|---|
| 965 |
</tr><tr> |
|---|
| 966 |
<td>setna</td> |
|---|
| 967 |
<td>setnae</td> |
|---|
| 968 |
<td>setnb</td> |
|---|
| 969 |
<td>setnbe</td> |
|---|
| 970 |
<td>setnc</td> |
|---|
| 971 |
</tr><tr> |
|---|
| 972 |
<td>setne</td> |
|---|
| 973 |
<td>setng</td> |
|---|
| 974 |
<td>setnge</td> |
|---|
| 975 |
<td>setnl</td> |
|---|
| 976 |
<td>setnle</td> |
|---|
| 977 |
</tr><tr> |
|---|
| 978 |
<td>setno</td> |
|---|
| 979 |
<td>setnp</td> |
|---|
| 980 |
<td>setns</td> |
|---|
| 981 |
<td>setnz</td> |
|---|
| 982 |
<td>seto</td> |
|---|
| 983 |
</tr><tr> |
|---|
| 984 |
<td>setp</td> |
|---|
| 985 |
<td>setpe</td> |
|---|
| 986 |
<td>setpo</td> |
|---|
| 987 |
<td>sets</td> |
|---|
| 988 |
<td>setz</td> |
|---|
| 989 |
</tr><tr> |
|---|
| 990 |
<td>sfence</td> |
|---|
| 991 |
<td>sgdt</td> |
|---|
| 992 |
<td>shl</td> |
|---|
| 993 |
<td>shld</td> |
|---|
| 994 |
<td>shr</td> |
|---|
| 995 |
</tr><tr> |
|---|
| 996 |
<td>shrd</td> |
|---|
| 997 |
<td>shufpd</td> |
|---|
| 998 |
<td>shufps</td> |
|---|
| 999 |
<td>sidt</td> |
|---|
| 1000 |
<td>sldt</td> |
|---|
| 1001 |
</tr><tr> |
|---|
| 1002 |
<td>smsw</td> |
|---|
| 1003 |
<td>sqrtpd</td> |
|---|
| 1004 |
<td>sqrtps</td> |
|---|
| 1005 |
<td>sqrtsd</td> |
|---|
| 1006 |
<td>sqrtss</td> |
|---|
| 1007 |
</tr><tr> |
|---|
| 1008 |
<td>stc</td> |
|---|
| 1009 |
<td>std</td> |
|---|
| 1010 |
<td>sti</td> |
|---|
| 1011 |
<td>stmxcsr</td> |
|---|
| 1012 |
<td>stos</td> |
|---|
| 1013 |
</tr><tr> |
|---|
| 1014 |
<td>stosb</td> |
|---|
| 1015 |
<td>stosd</td> |
|---|
| 1016 |
<td>stosw</td> |
|---|
| 1017 |
<td>str</td> |
|---|
| 1018 |
<td>sub</td> |
|---|
| 1019 |
</tr><tr> |
|---|
| 1020 |
<td>subpd</td> |
|---|
| 1021 |
<td>subps</td> |
|---|
| 1022 |
<td>subsd</td> |
|---|
| 1023 |
<td>subss</td> |
|---|
| 1024 |
<td>sysenter</td> |
|---|
| 1025 |
</tr><tr> |
|---|
| 1026 |
<td>sysexit</td> |
|---|
| 1027 |
<td>test</td> |
|---|
| 1028 |
<td>ucomisd</td> |
|---|
| 1029 |
<td>ucomiss</td> |
|---|
| 1030 |
<td>ud2</td> |
|---|
| 1031 |
</tr><tr> |
|---|
| 1032 |
<td>unpckhpd</td> |
|---|
| 1033 |
<td>unpckhps</td> |
|---|
| 1034 |
<td>unpcklpd</td> |
|---|
| 1035 |
<td>unpcklps</td> |
|---|
| 1036 |
<td>verr</td> |
|---|
| 1037 |
</tr><tr> |
|---|
| 1038 |
<td>verw</td> |
|---|
| 1039 |
<td>wait</td> |
|---|
| 1040 |
<td>wbinvd</td> |
|---|
| 1041 |
<td>wrmsr</td> |
|---|
| 1042 |
<td>xadd</td> |
|---|
| 1043 |
</tr><tr> |
|---|
| 1044 |
<td>xchg</td> |
|---|
| 1045 |
<td>xlat</td> |
|---|
| 1046 |
<td>xlatb</td> |
|---|
| 1047 |
<td>xor</td> |
|---|
| 1048 |
<td>xorpd</td> |
|---|
| 1049 |
</tr><tr> |
|---|
| 1050 |
<td>xorps</td> |
|---|
| 1051 |
<td> </td> |
|---|
| 1052 |
<td> </td> |
|---|
| 1053 |
<td> </td> |
|---|
| 1054 |
<td> </td> |
|---|
| 1055 |
</tr> |
|---|
| 1056 |
) |
|---|
| 1057 |
|
|---|
| 1058 |
<h3>Pentium 4 (Prescott) Opcodes Supported</h3> |
|---|
| 1059 |
|
|---|
| 1060 |
$(TABLE1 |
|---|
| 1061 |
<tr> |
|---|
| 1062 |
<td>addsubpd</td> |
|---|
| 1063 |
<td>addsubps</td> |
|---|
| 1064 |
<td>fisttp</td> |
|---|
| 1065 |
<td>haddpd</td> |
|---|
| 1066 |
<td>haddps</td> |
|---|
| 1067 |
</tr><tr> |
|---|
| 1068 |
<td>hsubpd</td> |
|---|
| 1069 |
<td>hsubps</td> |
|---|
| 1070 |
<td>lddqu</td> |
|---|
| 1071 |
<td>monitor</td> |
|---|
| 1072 |
<td>movddup</td> |
|---|
| 1073 |
</tr><tr> |
|---|
| 1074 |
<td>movshdup</td> |
|---|
| 1075 |
<td>movsldup</td> |
|---|
| 1076 |
<td>mwait</td> |
|---|
| 1077 |
<td> </td> |
|---|
| 1078 |
<td> </td> |
|---|
| 1079 |
|
|---|
| 1080 |
</tr> |
|---|
| 1081 |
) |
|---|
| 1082 |
|
|---|
| 1083 |
<h3>AMD Opcodes Supported</h3> |
|---|
| 1084 |
|
|---|
| 1085 |
$(TABLE1 |
|---|
| 1086 |
<tr> |
|---|
| 1087 |
<td>pavgusb</td> |
|---|
| 1088 |
<td>pf2id</td> |
|---|
| 1089 |
<td>pfacc</td> |
|---|
| 1090 |
<td>pfadd</td> |
|---|
| 1091 |
<td>pfcmpeq</td> |
|---|
| 1092 |
</tr><tr> |
|---|
| 1093 |
<td>pfcmpge</td> |
|---|
| 1094 |
<td>pfcmpgt</td> |
|---|
| 1095 |
<td>pfmax</td> |
|---|
| 1096 |
<td>pfmin</td> |
|---|
| 1097 |
<td>pfmul</td> |
|---|
| 1098 |
</tr><tr> |
|---|
| 1099 |
<td>pfnacc</td> |
|---|
| 1100 |
<td>pfpnacc</td> |
|---|
| 1101 |
<td>pfrcp</td> |
|---|
| 1102 |
<td>pfrcpit1</td> |
|---|
| 1103 |
<td>pfrcpit2</td> |
|---|
| 1104 |
</tr><tr> |
|---|
| 1105 |
<td>pfrsqit1</td> |
|---|
| 1106 |
<td>pfrsqrt</td> |
|---|
| 1107 |
<td>pfsub</td> |
|---|
| 1108 |
<td>pfsubr</td> |
|---|
| 1109 |
<td>pi2fd</td> |
|---|
| 1110 |
</tr><tr> |
|---|
| 1111 |
<td>pmulhrw</td> |
|---|
| 1112 |
<td>pswapd</td> |
|---|
| 1113 |
</tr> |
|---|
| 1114 |
) |
|---|
| 1115 |
|
|---|
| 1116 |
$(COMMENT |
|---|
| 1117 |
SSE4.1 |
|---|
| 1118 |
|
|---|
| 1119 |
blendpd |
|---|
| 1120 |
blendps |
|---|
| 1121 |
blendvpd |
|---|
| 1122 |
blendvps |
|---|
| 1123 |
dppd |
|---|
| 1124 |
dpps |
|---|
| 1125 |
extractps |
|---|
| 1126 |
insertps |
|---|
| 1127 |
movntdqa |
|---|
| 1128 |
mpsadbw |
|---|
| 1129 |
packusdw |
|---|
| 1130 |
pblendub |
|---|
| 1131 |
pblendw |
|---|
| 1132 |
pcmpeqq |
|---|
| 1133 |
pextrb |
|---|
| 1134 |
pextrd |
|---|
| 1135 |
pextrq |
|---|
| 1136 |
pextrw |
|---|
| 1137 |
phminposuw |
|---|
| 1138 |
pinsrb |
|---|
| 1139 |
pinsrd |
|---|
| 1140 |
pinsrq |
|---|
| 1141 |
pmaxsb |
|---|
| 1142 |
pmaxsd |
|---|
| 1143 |
pmaxud |
|---|
| 1144 |
pmaxuw |
|---|
| 1145 |
pminsb |
|---|
| 1146 |
pminsd |
|---|
| 1147 |
pminud |
|---|
| 1148 |
pminuw |
|---|
| 1149 |
pmovsxbd |
|---|
| 1150 |
pmovsxbq |
|---|
| 1151 |
pmovsxbw |
|---|
| 1152 |
pmovsxwd |
|---|
| 1153 |
pmovsxwq |
|---|
| 1154 |
pmovsxdq |
|---|
| 1155 |
pmovzxbd |
|---|
| 1156 |
pmovzxbq |
|---|
| 1157 |
pmovzxbw |
|---|
| 1158 |
pmovzxwd |
|---|
| 1159 |
pmovzxwq |
|---|
| 1160 |
pmovzxdq |
|---|
| 1161 |
pmuldq |
|---|
| 1162 |
pmulld |
|---|
| 1163 |
ptest |
|---|
| 1164 |
roundpd |
|---|
| 1165 |
roundps |
|---|
| 1166 |
roundsd |
|---|
| 1167 |
roundss |
|---|
| 1168 |
|
|---|
| 1169 |
SSE4.2 |
|---|
| 1170 |
|
|---|
| 1171 |
crc32 |
|---|
| 1172 |
pcmpestri |
|---|
| 1173 |
pcmpestrm |
|---|
| 1174 |
pcmpistri |
|---|
| 1175 |
pcmpistrm |
|---|
| 1176 |
pcmpgtq |
|---|
| 1177 |
popcnt |
|---|
| 1178 |
|
|---|
| 1179 |
VMS |
|---|
| 1180 |
|
|---|
| 1181 |
invept |
|---|
| 1182 |
invvpid |
|---|
| 1183 |
vmcall |
|---|
| 1184 |
vmclear |
|---|
| 1185 |
vmlaunch |
|---|
| 1186 |
vmresume |
|---|
| 1187 |
vmptrld |
|---|
| 1188 |
vmptrst |
|---|
| 1189 |
vmread |
|---|
| 1190 |
vmwrite |
|---|
| 1191 |
vmxoff |
|---|
| 1192 |
vmxon |
|---|
| 1193 |
|
|---|
| 1194 |
SMX |
|---|
| 1195 |
|
|---|
| 1196 |
getsec |
|---|
| 1197 |
) |
|---|
| 1198 |
|
|---|
| 1199 |
) |
|---|
| 1200 |
|
|---|
| 1201 |
Macros: |
|---|
| 1202 |
TITLE=Inline Assembler |
|---|
| 1203 |
WIKI=IAsm |
|---|