1 .macro try bytes:vararg 2 .byte \bytes 3 .byte 0x66, \bytes 4 .byte 0x48, \bytes 5 .byte 0x66, 0x48, \bytes 6 .endm 7 8 .text 9 10 _start: 11 try 0x50 12 try 0x58 13 14 try 0x8f, 0xc0 15 try 0x8f, 0x00 16 17 try 0xff, 0xd0 18 try 0xff, 0x10 19 20 try 0xff, 0xe0 21 try 0xff, 0x20 22 23 try 0xff, 0xf0 24 try 0xff, 0x30 25 26 # push with a 1-byte immediate 27 try 0x6a, 0xff 28 29 # push with a 4-byte immediate 30 try 0x68, 0x01, 0x02, 0x03, 0x04 31 32 # push a segment register 33 try 0x0f, 0xa8 34 # with extraneous rex.B 35 try 0x41, 0x0f, 0xa8 36 37 # This is just to synchronize the disassembly. 38 # Any new cases must come before this line! 39 nop 40