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