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 MOV AL,FLAT:[0x8877665544332211] 92 MOV EAX,FLAT:[0x8877665544332211] 93 MOV FLAT:[0x8877665544332211],AL 94 MOV FLAT:[0x8877665544332211],EAX 95 MOV RAX,FLAT:[0x8877665544332211] 96 MOV 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 32bit addressing 116 mov symbol, %eax 117 118 #arithmetic 119 mov symbol(%rax), %eax 120 121 #RIP relative 122 mov symbol(%rip), %eax 123 124 .intel_syntax noprefix 125 126 #immediates - various sizes: 127 mov al, offset flat:symbol 128 mov ax, offset flat:symbol 129 mov eax, offset flat:symbol 130 mov rax, offset flat:symbol 131 132 #parts aren't supported by the parser, yet (and not at all for symbol refs) 133 #mov eax, high part symbol 134 #mov eax, low part symbol 135 136 #addressing modes 137 138 #absolute 32bit addressing 139 mov eax, [symbol] 140 141 #arithmetic 142 mov eax, [rax+symbol] 143 144 #RIP relative 145 mov eax, [rip+symbol] 146 147 foo: 148 .att_syntax 149 #absolute 64bit addressing 150 mov 0x8877665544332211,%al 151 mov 0x8877665544332211,%ax 152 mov 0x8877665544332211,%eax 153 mov 0x8877665544332211,%rax 154 mov %al,0x8877665544332211 155 mov %ax,0x8877665544332211 156 mov %eax,0x8877665544332211 157 mov %rax,0x8877665544332211 158 movb 0x8877665544332211,%al 159 movw 0x8877665544332211,%ax 160 movl 0x8877665544332211,%eax 161 movq 0x8877665544332211,%rax 162 movb %al,0x8877665544332211 163 movw %ax,0x8877665544332211 164 movl %eax,0x8877665544332211 165 movq %rax,0x8877665544332211 166 167 #absolute signed 32bit addressing 168 mov 0xffffffffff332211,%al 169 mov 0xffffffffff332211,%ax 170 mov 0xffffffffff332211,%eax 171 mov 0xffffffffff332211,%rax 172 mov %al,0xffffffffff332211 173 mov %ax,0xffffffffff332211 174 mov %eax,0xffffffffff332211 175 mov %rax,0xffffffffff332211 176 movb 0xffffffffff332211,%al 177 movw 0xffffffffff332211,%ax 178 movl 0xffffffffff332211,%eax 179 movq 0xffffffffff332211,%rax 180 movb %al,0xffffffffff332211 181 movw %ax,0xffffffffff332211 182 movl %eax,0xffffffffff332211 183 movq %rax,0xffffffffff332211 184 185 cmpxchg16b (%rax) 186 187 .intel_syntax noprefix 188 cmpxchg16b oword ptr [rax] 189 190 .att_syntax 191 movsx %al, %si 192 movsx %al, %esi 193 movsx %al, %rsi 194 movsx %ax, %esi 195 movsx %ax, %rsi 196 movsx %eax, %rsi 197 movsx (%rax), %edx 198 movsx (%rax), %rdx 199 movsx (%rax), %dx 200 movsbl (%rax), %edx 201 movsbq (%rax), %rdx 202 movsbw (%rax), %dx 203 movswl (%rax), %edx 204 movswq (%rax), %rdx 205 206 movzx %al, %si 207 movzx %al, %esi 208 movzx %al, %rsi 209 movzx %ax, %esi 210 movzx %ax, %rsi 211 movzx (%rax), %edx 212 movzx (%rax), %rdx 213 movzx (%rax), %dx 214 movzb (%rax), %edx 215 movzb (%rax), %rdx 216 movzb (%rax), %dx 217 movzbl (%rax), %edx 218 movzbq (%rax), %rdx 219 movzbw (%rax), %dx 220 movzwl (%rax), %edx 221 movzwq (%rax), %rdx 222 223 .intel_syntax noprefix 224 movsx si,al 225 movsx esi,al 226 movsx rsi,al 227 movsx esi,ax 228 movsx rsi,ax 229 movsx rsi,eax 230 movsx edx,BYTE PTR [rax] 231 movsx rdx,BYTE PTR [rax] 232 movsx dx,BYTE PTR [rax] 233 movsx edx,WORD PTR [rax] 234 movsx rdx,WORD PTR [rax] 235 236 movzx si,al 237 movzx esi,al 238 movzx rsi,al 239 movzx esi,ax 240 movzx rsi,ax 241 movzx edx,BYTE PTR [rax] 242 movzx rdx,BYTE PTR [rax] 243 movzx dx,BYTE PTR [rax] 244 movzx edx,WORD PTR [rax] 245 movzx rdx,WORD PTR [rax] 246 247 movq xmm1,QWORD PTR [rsp] 248 movq xmm1,[rsp] 249 movq QWORD PTR [rsp],xmm1 250 movq [rsp],xmm1 251 252 .att_syntax 253 fnstsw 254 fnstsw %ax 255 fstsw 256 fstsw %ax 257 258 .intel_syntax noprefix 259 fnstsw 260 fnstsw ax 261 fstsw 262 fstsw ax 263 264 .att_syntax 265 movsx (%rax),%ax 266 movsx (%rax),%eax 267 movsx (%rax),%rax 268 movsxb (%rax), %dx 269 movsxb (%rax), %edx 270 movsxb (%rax), %rdx 271 movsxw (%rax), %edx 272 movsxw (%rax), %rdx 273 movsxl (%rax), %rdx 274 movsxd (%rax),%rax 275 movzx (%rax),%ax 276 movzx (%rax),%eax 277 movzx (%rax),%rax 278 movzxb (%rax), %dx 279 movzxb (%rax), %edx 280 movzxb (%rax), %rdx 281 movzxw (%rax), %edx 282 movzxw (%rax), %rdx 283 284 movnti %eax, (%rax) 285 movntil %eax, (%rax) 286 movnti %rax, (%rax) 287 movntiq %rax, (%rax) 288 289 .intel_syntax noprefix 290 291 movsx ax, BYTE PTR [rax] 292 movsx eax, BYTE PTR [rax] 293 movsx eax, WORD PTR [rax] 294 movsx rax, WORD PTR [rax] 295 movsx rax, DWORD PTR [rax] 296 movsxd rax, [rax] 297 movzx ax, BYTE PTR [rax] 298 movzx eax, BYTE PTR [rax] 299 movzx eax, WORD PTR [rax] 300 movzx rax, WORD PTR [rax] 301 302 movnti dword ptr [rax], eax 303 movnti qword ptr [rax], rax 304