Home | History | Annotate | Download | only in i386
      1 .text
      2 .intel_syntax noprefix
      3 # REX prefix and addressing modes.
      4 add edx,ecx
      5 add edx,r9d
      6 add r10d,ecx
      7 add rdx,rcx
      8 add r10,r9
      9 add r8d,eax
     10 add r8w,ax
     11 add r8,rax
     12 add eax,0x44332211
     13 add rax,0xfffffffff4332211
     14 add ax,0x4433
     15 add rax,0x44332211
     16 add dl,cl
     17 add bh,dh
     18 add dil,sil
     19 add r15b,sil
     20 add dil,r14b
     21 add r15b,r14b
     22 PUSH RAX
     23 PUSH R8
     24 POP R9
     25 ADD AL,0x11
     26 ADD AH,0x11
     27 ADD SPL,0x11
     28 ADD R8B,0x11
     29 ADD R12B,0x11
     30 MOV RAX,CR0
     31 MOV R8,CR0
     32 MOV RAX,CR8
     33 MOV CR8,RAX
     34 REP MOVSQ #[RSI],[RDI]
     35 REP MOVSW #[RSI,[RDI]
     36 REP MOVSQ #[RSI],[RDI]
     37 MOV AL, 0x11
     38 MOV AH, 0x11
     39 MOV SPL, 0x11
     40 MOV R12B, 0x11
     41 MOV EAX,0x11223344
     42 MOV R8D,0x11223344
     43 MOV RAX,0x1122334455667788
     44 MOV R8,0x1122334455667788
     45 add eax,[rax]
     46 ADD EAX,[R8]
     47 ADD R8D,[R8]
     48 ADD RAX,[R8]
     49 ADD EAX,[0x22222222+RIP]
     50 ADD EAX,[RBP+0x00]
     51 ADD EAX,FLAT:[0x22222222]
     52 ADD EAX,[R13+0]
     53 ADD EAX,[RAX+RAX*4]
     54 ADD EAX,[R8+RAX*4]
     55 ADD R8D,[R8+RAX*4]
     56 ADD EAX,[R8+R8*4]
     57 ADD [RCX+R8*4],R8D
     58 ADD EDX,[RAX+RAX*8]
     59 ADD EDX,[RAX+RCX*8]
     60 ADD EDX,[RAX+RDX*8]
     61 ADD EDX,[RAX+RBX*8]
     62 ADD EDX,[RAX]
     63 ADD EDX,[RAX+RBP*8]
     64 ADD EDX,[RAX+RSI*8]
     65 ADD EDX,[RAX+RDI*8]
     66 ADD EDX,[RAX+R8*8]
     67 ADD EDX,[RAX+R9*8]
     68 ADD EDX,[RAX+R10*8]
     69 ADD EDX,[RAX+R11*8]
     70 ADD EDX,[RAX+R12*8]
     71 ADD EDX,[RAX+R13*8]
     72 ADD EDX,[RAX+R14*8]
     73 ADD EDX,[RAX+R15*8]
     74 ADD ECX,0x11
     75 ADD DWORD PTR [RAX],0x11
     76 ADD QWORD PTR [RAX],0x11
     77 ADD DWORD PTR [R8],0x11
     78 ADD DWORD PTR [RCX+RAX*4],0x11
     79 ADD DWORD PTR [R9+RAX*4],0x11
     80 ADD DWORD PTR [RCX+R8*4],0x11
     81 ADD DWORD PTR [0x22222222+RIP],0x33
     82 ADD QWORD PTR [RIP+0x22222222],0x33
     83 ADD DWORD PTR [RIP+0x22222222],0x33333333
     84 ADD QWORD PTR [RIP+0x22222222],0x33333333
     85 ADD DWORD PTR [RAX*8+0x22222222],0x33
     86 ADD DWORD PTR [RAX+0x22222222],0x33
     87 ADD DWORD PTR [RAX+0x22222222],0x33
     88 ADD DWORD PTR [R8+RBP*8],0x33
     89 ADD DWORD PTR FLAT:[0x22222222],0x33
     90 #new instructions
     91 MOVABS AL,FLAT:[0x8877665544332211]
     92 MOVABS EAX,FLAT:[0x8877665544332211]
     93 MOVABS FLAT:[0x8877665544332211],AL
     94 MOVABS FLAT:[0x8877665544332211],EAX
     95 MOVABS RAX,FLAT:[0x8877665544332211]
     96 MOVABS FLAT:[0x8877665544332211],RAX
     97 cqo
     98 cdqe
     99 movsx rax, eax
    100 movsx rax, ax
    101 movsx rax, al
    102 bar:
    103 .att_syntax
    104 #testcase for symbol references.
    105 
    106 #immediates - various sizes:
    107 
    108 mov $symbol, %al
    109 mov $symbol, %ax
    110 mov $symbol, %eax
    111 mov $symbol, %rax
    112 
    113 #addressing modes:
    114 
    115 #absolute 64bit addressing
    116 movabs symbol, %eax
    117 
    118 #absolute 32bit addressing
    119 mov symbol, %eax
    120 
    121 #arithmetic
    122 mov symbol(%rax), %eax
    123 
    124 #RIP relative
    125 mov symbol(%rip), %eax
    126 
    127 .intel_syntax noprefix
    128 
    129 #immediates - various sizes:
    130 mov al, offset flat:symbol
    131 mov ax, offset flat:symbol
    132 mov eax, offset flat:symbol
    133 mov rax, offset flat:symbol
    134 
    135 #parts aren't supported by the parser, yet (and not at all for symbol refs)
    136 #mov eax, high part symbol
    137 #mov eax, low part symbol
    138 
    139 #addressing modes
    140 
    141 #absolute 64bit addressing
    142 movabs eax, [symbol]
    143 
    144 #absolute 32bit addressing
    145 mov eax, [symbol]
    146 
    147 #arithmetic
    148 mov eax, [rax+symbol]
    149 
    150 #RIP relative
    151 mov eax, [rip+symbol]
    152 
    153 foo:
    154 .att_syntax
    155 #absolute 64bit addressing
    156 mov 0x8877665544332211,%al
    157 mov 0x8877665544332211,%ax
    158 mov 0x8877665544332211,%eax
    159 mov 0x8877665544332211,%rax
    160 mov %al,0x8877665544332211
    161 mov %ax,0x8877665544332211
    162 mov %eax,0x8877665544332211
    163 mov %rax,0x8877665544332211
    164 movb 0x8877665544332211,%al
    165 movw 0x8877665544332211,%ax
    166 movl 0x8877665544332211,%eax
    167 movq 0x8877665544332211,%rax
    168 movb %al,0x8877665544332211
    169 movw %ax,0x8877665544332211
    170 movl %eax,0x8877665544332211
    171 movq %rax,0x8877665544332211
    172 
    173 #absolute signed 32bit addressing
    174 mov 0xffffffffff332211,%al
    175 mov 0xffffffffff332211,%ax
    176 mov 0xffffffffff332211,%eax
    177 mov 0xffffffffff332211,%rax
    178 mov %al,0xffffffffff332211
    179 mov %ax,0xffffffffff332211
    180 mov %eax,0xffffffffff332211
    181 mov %rax,0xffffffffff332211
    182 movb 0xffffffffff332211,%al
    183 movw 0xffffffffff332211,%ax
    184 movl 0xffffffffff332211,%eax
    185 movq 0xffffffffff332211,%rax
    186 movb %al,0xffffffffff332211
    187 movw %ax,0xffffffffff332211
    188 movl %eax,0xffffffffff332211
    189 movq %rax,0xffffffffff332211
    190 
    191 cmpxchg16b (%rax)
    192 
    193 .intel_syntax noprefix
    194 cmpxchg16b oword ptr [rax]
    195 
    196 .att_syntax
    197 	movsx	%al, %si
    198 	movsx	%al, %esi
    199 	movsx	%al, %rsi
    200 	movsx	%ax, %esi
    201 	movsx	%ax, %rsi
    202 	movsx	%eax, %rsi
    203 	movsx	(%rax), %edx
    204 	movsx	(%rax), %rdx
    205 	movsx	(%rax), %dx
    206 	movsbl	(%rax), %edx
    207 	movsbq	(%rax), %rdx
    208 	movsbw	(%rax), %dx
    209 	movswl	(%rax), %edx
    210 	movswq	(%rax), %rdx
    211 
    212 	movzx	%al, %si
    213 	movzx	%al, %esi
    214 	movzx	%al, %rsi
    215 	movzx	%ax, %esi
    216 	movzx	%ax, %rsi
    217 	movzx	(%rax), %edx
    218 	movzx	(%rax), %rdx
    219 	movzx	(%rax), %dx
    220 	movzb	(%rax), %edx
    221 	movzb	(%rax), %rdx
    222 	movzb	(%rax), %dx
    223 	movzbl	(%rax), %edx
    224 	movzbq	(%rax), %rdx
    225 	movzbw	(%rax), %dx
    226 	movzwl	(%rax), %edx
    227 	movzwq	(%rax), %rdx
    228 
    229 	.intel_syntax noprefix
    230 	movsx	si,al
    231 	movsx	esi,al
    232 	movsx	rsi,al
    233 	movsx	esi,ax
    234 	movsx	rsi,ax
    235 	movsx	rsi,eax
    236 	movsx	edx,BYTE PTR [rax]
    237 	movsx	rdx,BYTE PTR [rax]
    238 	movsx	dx,BYTE PTR [rax]
    239 	movsx	edx,WORD PTR [rax]
    240 	movsx	rdx,WORD PTR [rax]
    241 
    242 	movzx	si,al
    243 	movzx	esi,al
    244 	movzx	rsi,al
    245 	movzx	esi,ax
    246 	movzx	rsi,ax
    247 	movzx	edx,BYTE PTR [rax]
    248 	movzx	rdx,BYTE PTR [rax]
    249 	movzx	dx,BYTE PTR [rax]
    250 	movzx	edx,WORD PTR [rax]
    251 	movzx	rdx,WORD PTR [rax]
    252 
    253 	movq	xmm1,QWORD PTR [rsp]
    254 	movq	xmm1,[rsp]
    255 	movq	QWORD PTR [rsp],xmm1
    256 	movq	[rsp],xmm1
    257 
    258 .att_syntax
    259 	fnstsw
    260 	fnstsw	%ax
    261 	fstsw
    262 	fstsw	%ax
    263 
    264 	.intel_syntax noprefix
    265 	fnstsw
    266 	fnstsw	ax
    267 	fstsw
    268 	fstsw	ax
    269 
    270 .att_syntax
    271 movsx (%rax),%ax
    272 movsx (%rax),%eax
    273 movsx (%rax),%rax
    274 movsxb	(%rax), %dx
    275 movsxb	(%rax), %edx
    276 movsxb	(%rax), %rdx
    277 movsxw	(%rax), %edx
    278 movsxw	(%rax), %rdx
    279 movsxl	(%rax), %rdx
    280 movsxd (%rax),%rax
    281 movzx (%rax),%ax
    282 movzx (%rax),%eax
    283 movzx (%rax),%rax
    284 movzxb	(%rax), %dx
    285 movzxb	(%rax), %edx
    286 movzxb	(%rax), %rdx
    287 movzxw	(%rax), %edx
    288 movzxw	(%rax), %rdx
    289 
    290 movnti %eax, (%rax)
    291 movntil %eax, (%rax)
    292 movnti %rax, (%rax)
    293 movntiq %rax, (%rax)
    294 
    295 .intel_syntax noprefix
    296 
    297 movsx ax, BYTE PTR [rax]
    298 movsx eax, BYTE PTR [rax]
    299 movsx eax, WORD PTR [rax]
    300 movsx rax, WORD PTR [rax]
    301 movsx rax, DWORD PTR [rax]
    302 movsxd rax, [rax]
    303 movzx ax, BYTE PTR [rax]
    304 movzx eax, BYTE PTR [rax]
    305 movzx eax, WORD PTR [rax]
    306 movzx rax, WORD PTR [rax]
    307 
    308 movnti dword ptr [rax], eax
    309 movnti qword ptr [rax], rax
    310