1.text 2.intel_syntax noprefix 3foo: 4 add byte ptr 0x90909090[eax], dl 5 add dword ptr 0x90909090[eax], edx 6 add dl, byte ptr 0x90909090[eax] 7 add edx, dword ptr 0x90909090[eax] 8 add al, 0x90 9 add eax, 0x90909090 10 push es 11 pop es 12 or [eax+0x90909090], dl 13 or [eax+0x90909090], edx 14 or dl, [eax+0x90909090] 15 or edx, [eax+0x90909090] 16 or al, 0x90 17 or eax, 0x90909090 18 push cs 19 adc byte ptr [eax+0x90909090], dl 20 adc dword ptr [eax+0x90909090], edx 21 adc dl, byte ptr [eax+0x90909090] 22 adc edx, dword ptr [eax+0x90909090] 23 adc al, 0x90 24 adc eax, 0x90909090 25 push ss 26 pop ss 27 sbb 0x90909090[eax], dl 28 sbb 0x90909090[eax], edx 29 sbb dl, 0x90909090[eax] 30 sbb edx, 0x90909090[eax] 31 sbb al, 0x90 32 sbb eax, 0x90909090 33 push ds 34 pop ds 35 and 0x90909090[eax], dl 36 and 0x90909090[eax], edx 37 and dl, 0x90909090[eax] 38 and edx, 0x90909090[eax] 39 and al, 0x90 40 and eax, 0x90909090 41 daa 42 sub 0x90909090[eax], dl 43 sub 0x90909090[eax], edx 44 sub dl, 0x90909090[eax] 45 sub edx, 0x90909090[eax] 46 sub al, 0x90 47 sub eax, 0x90909090 48 das 49 xor 0x90909090[eax], dl 50 xor 0x90909090[eax], edx 51 xor dl, 0x90909090[eax] 52 xor edx, 0x90909090[eax] 53 xor al, 0x90 54 xor eax, 0x90909090 55 aaa 56 cmp 0x90909090[eax], dl 57 cmp 0x90909090[eax], edx 58 cmp dl, 0x90909090[eax] 59 cmp edx, 0x90909090[eax] 60 cmp al, 0x90 61 cmp eax, 0x90909090 62 aas 63 inc eax 64 inc ecx 65 inc edx 66 inc ebx 67 inc esp 68 inc ebp 69 inc esi 70 inc edi 71 dec eax 72 dec ecx 73 dec edx 74 dec ebx 75 dec esp 76 dec ebp 77 dec esi 78 dec edi 79 push eax 80 push ecx 81 push edx 82 push ebx 83 push esp 84 push ebp 85 push esi 86 push edi 87 pop eax 88 pop ecx 89 pop edx 90 pop ebx 91 pop esp 92 pop ebp 93 pop esi 94 pop edi 95 pusha 96 popa 97 bound edx, 0x90909090[eax] 98 arpl 0x90909090[eax], dx 99 push 0x90909090 100 imul edx, 0x90909090[eax], 0x90909090 101 push 0xffffff90 102 imul edx, 0x90909090[eax], 0xffffff90 103 ins byte ptr es:[edi], dx 104 ins dword ptr es:[edi], dx 105 outs dx, byte ptr ds:[esi] 106 outs dx, dword ptr ds:[esi] 107 jo .+2-0x70 108 jno .+2-0x70 109 jb .+2-0x70 110 jae .+2-0x70 111 je .+2-0x70 112 jne .+2-0x70 113 jbe .+2-0x70 114 ja .+2-0x70 115 js .+2-0x70 116 jns .+2-0x70 117 jp .+2-0x70 118 jnp .+2-0x70 119 jl .+2-0x70 120 jge .+2-0x70 121 jle .+2-0x70 122 jg .+2-0x70 123 adc byte ptr 0x90909090[eax], 0x90 124 adc dword ptr 0x90909090[eax], 0x90909090 125 adc dword ptr 0x90909090[eax], 0xffffff90 126 test 0x90909090[eax], dl 127 test 0x90909090[eax], edx 128 xchg 0x90909090[eax], dl 129 xchg 0x90909090[eax], edx 130 mov 0x90909090[eax], dl 131 mov 0x90909090[eax], edx 132 mov dl, 0x90909090[eax] 133 mov edx, 0x90909090[eax] 134 mov word ptr 0x90909090[eax], ss 135 lea edx, 0x90909090[eax] 136 mov ss, word ptr 0x90909090[eax] 137 pop dword ptr 0x90909090[eax] 138 xchg eax, eax 139 xchg ecx, eax 140 xchg edx, eax 141 xchg ebx, eax 142 xchg esp, eax 143 xchg ebp, eax 144 xchg esi, eax 145 xchg edi, eax 146 cwde 147 cdq 148 call 0x9090:0x90909090 149 fwait 150 pushf 151 popf 152 sahf 153 lahf 154 mov al, FLAT:[0x90909090] 155 mov eax, FLAT:[0x90909090] 156 mov FLAT:[0x90909090], al 157 mov FLAT:[0x90909090], eax 158 movs byte ptr es:[edi], byte ptr ds:[esi] 159 movs dword ptr es:[edi], dword ptr ds:[esi] 160 cmps byte ptr ds:[esi], byte ptr es:[edi] 161 cmps dword ptr ds:[esi], dword ptr es:[edi] 162 test al, 0x90 163 test eax, 0x90909090 164 stos byte ptr es:[edi], al 165 stos dword ptr es:[edi], eax 166 lods al, byte ptr ds:[esi] 167 lods eax, dword ptr ds:[esi] 168 scas al, byte ptr es:[edi] 169 scas eax, dword ptr es:[edi] 170 mov al, 0x90 171 mov cl, 0x90 172 mov dl, 0x90 173 mov bl, 0x90 174 mov ah, 0x90 175 mov ch, 0x90 176 mov dh, 0x90 177 mov bh, 0x90 178 mov eax, 0x90909090 179 mov ecx, 0x90909090 180 mov edx, 0x90909090 181 mov ebx, 0x90909090 182 mov esp, 0x90909090 183 mov ebp, 0x90909090 184 mov esi, 0x90909090 185 mov edi, 0x90909090 186 rcl byte ptr 0x90909090[eax], 0x90 187 rcl dword ptr 0x90909090[eax], 0x90 188 ret 0x9090 189 ret 190 les edx, 0x90909090[eax] 191 lds edx, 0x90909090[eax] 192 mov byte ptr 0x90909090[eax], 0x90 193 mov dword ptr 0x90909090[eax], 0x90909090 194 enter 0x9090, 0x90 195 leave 196 retf 0x9090 197 retf 198 lret 0x9090 199 lret 200 int3 201 int 0x90 202 into 203 iret 204 rcl byte ptr 0x90909090[eax] 205 rcl dword ptr 0x90909090[eax] 206 rcl byte ptr 0x90909090[eax], cl 207 rcl dword ptr 0x90909090[eax], cl 208 aam 0xffffff90 209 aad 0xffffff90 210 xlat byte ptr ds:[ebx] 211 fcom dword ptr 0x90909090[eax] 212 fst dword ptr 0x90909090[eax] 213 ficom dword ptr 0x90909090[eax] 214 fist dword ptr 0x90909090[eax] 215 fcom qword ptr 0x90909090[eax] 216 fst qword ptr 0x90909090[eax] 217 ficom word ptr 0x90909090[eax] 218 fist word ptr 0x90909090[eax] 219 loopne .+2-0x70 220 loope .+2-0x70 221 loop .+2-0x70 222 jecxz .+2-0x70 223 in al, 0x90 224 in eax, 0x90 225 out 0x90, al 226 out 0x90, eax 227 call .+5+0x90909090 228 jmp .+5+0x90909090 229 jmp 0x9090:0x90909090 230 jmp .+2-0x70 231 in al, dx 232 in eax, dx 233 out dx, al 234 out dx, eax 235 hlt 236 cmc 237 not byte ptr 0x90909090[eax] 238 not dword ptr 0x90909090[eax] 239 clc 240 stc 241 cli 242 sti 243 cld 244 std 245 call dword ptr 0x90909090[eax] 246 lldt 0x90909090[eax] 247 lgdt 0x90909090[eax] 248 lar edx, 0x90909090[eax] 249 lsl edx, 0x90909090[eax] 250 clts 251 invd 252 wbinvd 253 ud2a 254 mov eax, cr2 255 mov eax, db2 256 mov cr2, eax 257 mov db2, eax 258 mov eax, tr2 259 mov tr2, eax 260 wrmsr 261 rdtsc 262 rdmsr 263 rdpmc 264 cmovo edx, 0x90909090[eax] 265 cmovno edx, 0x90909090[eax] 266 cmovb edx, 0x90909090[eax] 267 cmovae edx, 0x90909090[eax] 268 cmove edx, 0x90909090[eax] 269 cmovne edx, 0x90909090[eax] 270 cmovbe edx, 0x90909090[eax] 271 cmova edx, 0x90909090[eax] 272 cmovs edx, 0x90909090[eax] 273 cmovns edx, 0x90909090[eax] 274 cmovp edx, 0x90909090[eax] 275 cmovnp edx, 0x90909090[eax] 276 cmovl edx, 0x90909090[eax] 277 cmovge edx, 0x90909090[eax] 278 cmovle edx, 0x90909090[eax] 279 cmovg edx, 0x90909090[eax] 280 punpcklbw mm2, 0x90909090[eax] 281 punpcklwd mm2, 0x90909090[eax] 282 punpckldq mm2, 0x90909090[eax] 283 packsswb mm2, 0x90909090[eax] 284 pcmpgtb mm2, 0x90909090[eax] 285 pcmpgtw mm2, 0x90909090[eax] 286 pcmpgtd mm2, 0x90909090[eax] 287 packuswb mm2, 0x90909090[eax] 288 punpckhbw mm2, 0x90909090[eax] 289 punpckhwd mm2, 0x90909090[eax] 290 punpckhdq mm2, 0x90909090[eax] 291 packssdw mm2, 0x90909090[eax] 292 movd mm2, 0x90909090[eax] 293 movq mm2, 0x90909090[eax] 294 psrlw mm0, 0x90 295 psrld mm0, 0x90 296 psrlq mm0, 0x90 297 pcmpeqb mm2, 0x90909090[eax] 298 pcmpeqw mm2, 0x90909090[eax] 299 pcmpeqd mm2, 0x90909090[eax] 300 emms 301 movd 0x90909090[eax], mm2 302 movq 0x90909090[eax], mm2 303 jo .+6+0x90909090 304 jno .+6+0x90909090 305 jb .+6+0x90909090 306 jae .+6+0x90909090 307 je .+6+0x90909090 308 jne .+6+0x90909090 309 jbe .+6+0x90909090 310 ja .+6+0x90909090 311 js .+6+0x90909090 312 jns .+6+0x90909090 313 jp .+6+0x90909090 314 jnp .+6+0x90909090 315 jl .+6+0x90909090 316 jge .+6+0x90909090 317 jle .+6+0x90909090 318 jg .+6+0x90909090 319 seto 0x90909090[eax] 320 setno 0x90909090[eax] 321 setb 0x90909090[eax] 322 setae 0x90909090[eax] 323 sete 0x90909090[eax] 324 setne 0x90909090[eax] 325 setbe 0x90909090[eax] 326 seta 0x90909090[eax] 327 sets 0x90909090[eax] 328 setns 0x90909090[eax] 329 setp 0x90909090[eax] 330 setnp 0x90909090[eax] 331 setl 0x90909090[eax] 332 setge 0x90909090[eax] 333 setle 0x90909090[eax] 334 setg 0x90909090[eax] 335 push fs 336 pop fs 337 cpuid 338 bt 0x90909090[eax], edx 339 shld 0x90909090[eax], edx, 0x90 340 shld 0x90909090[eax], edx, cl 341 push gs 342 pop gs 343 rsm 344 bts 0x90909090[eax], edx 345 shrd 0x90909090[eax], edx, 0x90 346 shrd 0x90909090[eax], edx, cl 347 imul edx, 0x90909090[eax] 348 cmpxchg 0x90909090[eax], dl 349 cmpxchg 0x90909090[eax], edx 350 lss edx, 0x90909090[eax] 351 btr 0x90909090[eax], edx 352 lfs edx, 0x90909090[eax] 353 lgs edx, 0x90909090[eax] 354 movzx edx, byte ptr 0x90909090[eax] 355 movzx edx, word ptr 0x90909090[eax] 356 ud2b 357 btc 0x90909090[eax], edx 358 bsf edx, 0x90909090[eax] 359 bsr edx, 0x90909090[eax] 360 movsx edx, byte ptr 0x90909090[eax] 361 movsx edx, word ptr 0x90909090[eax] 362 xadd 0x90909090[eax], dl 363 xadd 0x90909090[eax], edx 364 bswap eax 365 bswap ecx 366 bswap edx 367 bswap ebx 368 bswap esp 369 bswap ebp 370 bswap esi 371 bswap edi 372 psrlw mm2, 0x90909090[eax] 373 psrld mm2, 0x90909090[eax] 374 psrlq mm2, 0x90909090[eax] 375 pmullw mm2, 0x90909090[eax] 376 psubusb mm2, 0x90909090[eax] 377 psubusw mm2, 0x90909090[eax] 378 pand mm2, 0x90909090[eax] 379 paddusb mm2, 0x90909090[eax] 380 paddusw mm2, 0x90909090[eax] 381 pandn mm2, 0x90909090[eax] 382 psraw mm2, 0x90909090[eax] 383 psrad mm2, 0x90909090[eax] 384 pmulhw mm2, 0x90909090[eax] 385 psubsb mm2, 0x90909090[eax] 386 psubsw mm2, 0x90909090[eax] 387 por mm2, 0x90909090[eax] 388 paddsb mm2, 0x90909090[eax] 389 paddsw mm2, 0x90909090[eax] 390 pxor mm2, 0x90909090[eax] 391 psllw mm2, 0x90909090[eax] 392 pslld mm2, 0x90909090[eax] 393 psllq mm2, 0x90909090[eax] 394 pmaddwd mm2, 0x90909090[eax] 395 psubb mm2, 0x90909090[eax] 396 psubw mm2, 0x90909090[eax] 397 psubd mm2, 0x90909090[eax] 398 paddb mm2, 0x90909090[eax] 399 paddw mm2, 0x90909090[eax] 400 paddd mm2, 0x90909090[eax] 401 add 0x90909090[eax], dx 402 add dx, 0x90909090[eax] 403 add ax, 0x9090 404 pushw es 405 popw es 406 or 0x90909090[eax], dx 407 or dx, 0x90909090[eax] 408 or ax, 0x9090 409 pushw cs 410 adc 0x90909090[eax], dx 411 adc dx, 0x90909090[eax] 412 adc ax, 0x9090 413 pushw ss 414 popw ss 415 sbb 0x90909090[eax], dx 416 sbb dx, 0x90909090[eax] 417 sbb ax, 0x9090 418 pushw ds 419 popw ds 420 and 0x90909090[eax], dx 421 and dx, 0x90909090[eax] 422 and ax, 0x9090 423 sub 0x90909090[eax], dx 424 sub dx, 0x90909090[eax] 425 sub ax, 0x9090 426 xor 0x90909090[eax], dx 427 xor dx, 0x90909090[eax] 428 xor ax, 0x9090 429 cmp 0x90909090[eax], dx 430 cmp dx, 0x90909090[eax] 431 cmp ax, 0x9090 432 inc ax 433 inc cx 434 inc dx 435 inc bx 436 inc sp 437 inc bp 438 inc si 439 inc di 440 dec ax 441 dec cx 442 dec dx 443 dec bx 444 dec sp 445 dec bp 446 dec si 447 dec di 448 push ax 449 push cx 450 push dx 451 push bx 452 push sp 453 push bp 454 push si 455 push di 456 pop ax 457 pop cx 458 pop dx 459 pop bx 460 pop sp 461 pop bp 462 pop si 463 pop di 464 pushaw # how should we specify a word push all regs? 465 popaw # ditto for popa 466 bound dx, 0x90909090[eax] 467 pushw 0x9090 468 imul dx, 0x90909090[eax], 0x9090 469 pushw 0xffffff90 470 imul dx, 0x90909090[eax], 0xffffff90 471 ins word ptr es:[edi], dx 472 outs dx, word ptr ds:[esi] 473 adc word ptr 0x90909090[eax], 0x9090 474 adc word ptr 0x90909090[eax], 0xffffff90 475 test 0x90909090[eax], dx 476 xchg 0x90909090[eax], dx 477 mov 0x90909090[eax], dx 478 mov dx, 0x90909090[eax] 479 mov word ptr 0x90909090[eax], ss 480 lea dx, 0x90909090[eax] 481 pop word ptr 0x90909090[eax] 482 xchg cx, ax 483 xchg dx, ax 484 xchg bx, ax 485 xchg sp, ax 486 xchg bp, ax 487 xchg si, ax 488 xchg di, ax 489 cbw 490 cwd 491 callw 0x9090:0x9090 492 pushfw 493 popfw 494 mov ax, FLAT:[0x90909090] 495 mov FLAT:[0x90909090], ax 496 movs word ptr es:[edi], word ptr ds:[esi] 497 cmps word ptr ds:[esi], word ptr es:[edi] 498 test ax, 0x9090 499 stos word ptr es:[edi], ax 500 lods ax, word ptr ds:[esi] 501 scas ax, word ptr es:[edi] 502 mov ax, 0x9090 503 mov cx, 0x9090 504 mov dx, 0x9090 505 mov bx, 0x9090 506 mov sp, 0x9090 507 mov bp, 0x9090 508 mov si, 0x9090 509 mov di, 0x9090 510 rcl word ptr 0x90909090[eax], 0x90 511 retw 0x9090 512 retw 513 les dx, 0x90909090[eax] 514 lds dx, 0x90909090[eax] 515 mov word ptr 0x90909090[eax], 0x9090 516 enterw 0x9090, 0x90 517 leavew 518 retfw 0x9090 519 retfw 520 lretw 0x9090 521 lretw 522 iretw 523 rcl word ptr 0x90909090[eax] 524 rcl word ptr 0x90909090[eax], cl 525 in ax, 0x90 526 out 0x90, ax 527 callw .+3+0x9090 528 jmpw 0x9090:0x9090 529 in ax, dx 530 out dx, ax 531 not word ptr 0x90909090[eax] 532 call word ptr 0x90909090[eax] 533 lar dx, 0x90909090[eax] 534 lsl dx, 0x90909090[eax] 535 cmovo dx, 0x90909090[eax] 536 cmovno dx, 0x90909090[eax] 537 cmovb dx, 0x90909090[eax] 538 cmovae dx, 0x90909090[eax] 539 cmove dx, 0x90909090[eax] 540 cmovne dx, 0x90909090[eax] 541 cmovbe dx, 0x90909090[eax] 542 cmova dx, 0x90909090[eax] 543 cmovs dx, 0x90909090[eax] 544 cmovns dx, 0x90909090[eax] 545 cmovp dx, 0x90909090[eax] 546 cmovnp dx, 0x90909090[eax] 547 cmovl dx, 0x90909090[eax] 548 cmovge dx, 0x90909090[eax] 549 cmovle dx, 0x90909090[eax] 550 cmovg dx, 0x90909090[eax] 551 pushw fs 552 popw fs 553 bt 0x90909090[eax], dx 554 shld 0x90909090[eax], dx, 0x90 555 shld 0x90909090[eax], dx, cl 556 pushw gs 557 popw gs 558 bts 0x90909090[eax], dx 559 shrd 0x90909090[eax], dx, 0x90 560 shrd 0x90909090[eax], dx, cl 561 imul dx, 0x90909090[eax] 562 cmpxchg 0x90909090[eax], dx 563 lss dx, 0x90909090[eax] 564 btr 0x90909090[eax], dx 565 lfs dx, 0x90909090[eax] 566 lgs dx, 0x90909090[eax] 567 movzx dx, byte ptr 0x90909090[eax] 568 btc 0x90909090[eax], dx 569 bsf dx, 0x90909090[eax] 570 bsr dx, 0x90909090[eax] 571 movsx dx, byte ptr 0x90909090[eax] 572 xadd 0x90909090[eax], dx 573 574gs_foo: 575 ret 576 577short_foo: 578 ret 579 580bar: 581 call gs_foo 582 call short_foo 583 fstp QWORD PTR [eax+edx*8] 584 mov ecx, OFFSET FLAT:xyz 585 mov BYTE PTR [esi+edx], al 586 mov BYTE PTR [edx+esi], al 587 mov BYTE PTR [edx*2+esi], al 588 mov BYTE PTR [esi+edx*2], al 589 jmp short rot5 590 ins byte ptr es:[edi], dx 591 xadd 0x90909090[eax], dx 592 and %eax, -8 593rot5: 594 mov %eax, DWORD PTR [%esi+4+%ecx*8] 595 ins BYTE PTR es:[edi], dx 596 or al, 0x90 597 or eax, 0x90909090 598 push cs 599 mov eax, [ebx*2] 600 adc BYTE PTR [eax*4+0x90909090], dl 601 das 602 jmp 0x9090:0x90909090 603 movs WORD PTR es:[edi], WORD PTR ds:[esi] 604 jo .+2-0x70 605 6061: 607 jne 1b 608 movq mm6, [QWORD PTR .LC5+40] 609 add edi, dword ptr [ebx+8*eax] 610 movd mm0, dword ptr [ebx+8*eax+4] 611 add edi, dword ptr [ebx+8*ecx+((4095+1)*8)] 612 movd mm1, dword ptr [ebx+8*ecx+((4095+1)*8)+4] 613 movd mm2, dword ptr [ebx+8*eax+(2*(4095+1)*8)+4] 614 add edi, dword ptr [ebx+8*eax+(2*(4095+1)*8)] 615 mov ax, word ptr [ebx+2*eax] 616 mov cx, word ptr [ebx+2*ecx+((4095+1)*2)] 617 mov ax, word ptr [ebx+2*eax+(2*(4095+1)*2)] 618 jmp eax 619 jmp [eax] 620 jmp FLAT:[bar] 621 jmp bar 622 623 # Check arithmetic operators 624 mov %eax,(( 17 ) + 1) 625 and %eax,~(1 << ( 18 )) 626 and %eax,0xFFFBFFFF 627 mov %al, (( 0x4711 ) & 0xff) 628 mov %al, 0x11 629 mov %bl, ((( 0x4711 ) >> 8) & 0xff) 630 mov %bl, 0x47 631 632 shrd eax, edx, cl 633 shld eax, edx, cl 634 635fadd 636fadd st(3) 637fadd st,st(3) 638fadd st(3),st 639fadd DWORD PTR [ebx] 640fadd QWORD PTR [ebx] 641faddp 642faddp st(3) 643faddp st(3),st 644fdiv 645fdiv st(3) 646fdiv st,st(3) 647fdiv st(3),st 648fdiv DWORD PTR [ebx] 649fdiv QWORD PTR [ebx] 650fdivp 651fdivp st(3) 652fdivp st(3),st 653fdivp st,st(3) 654fdivr 655fdivr st(3) 656fdivr st,st(3) 657fdivr st(3),st 658fdivr DWORD PTR [ebx] 659fdivr QWORD PTR [ebx] 660fdivrp 661fdivrp st(3) 662fdivrp st(3),st 663fdivrp st,st(3) 664fmul 665fmul st(3) 666fmul st,st(3) 667fmul st(3),st 668fmul DWORD PTR [ebx] 669fmul QWORD PTR [ebx] 670fmulp 671fmulp st(3) 672fmulp st(3),st 673fsub 674fsubr 675fsub st(3) 676fsub st,st(3) 677fsub st(3),st 678fsub DWORD PTR [ebx] 679fsub QWORD PTR [ebx] 680fsubp 681fsubp st(3) 682fsubp st,st(3) 683fsubp st(3),st 684fsubr st(3) 685fsubr st,st(3) 686fsubr st(3),st 687fsubr DWORD PTR [ebx] 688fsubr QWORD PTR [ebx] 689fsubrp 690fsubrp st(3) 691fsubrp st(3),st 692fsubrp st,st(3) 693 694fidivr word ptr [ebx] 695fidivr dword ptr [ebx] 696 697 cmovpe edx, 0x90909090[eax] 698 cmovpo edx, 0x90909090[eax] 699 cmovpe dx, 0x90909090[eax] 700 cmovpo dx, 0x90909090[eax] 701