| OLD | NEW |
| (Empty) |
| 1 # Defines possible kinds of operands an opcode can have. | |
| 2 # Each line defines a separate operand kind. | |
| 3 | |
| 4 Unknown_Operand # Unknown operand. | |
| 5 | |
| 6 # Note: The instruction decoder may count on the fact that the A_operand | |
| 7 # values are contiguous, in the order specifed. | |
| 8 | |
| 9 # Models a 48-bit far pointer. | |
| 10 A_Operand | |
| 11 | |
| 12 # Note: The instruction decoder may count on the fact that the E_operand | |
| 13 # values are contiguous, in the order specified. | |
| 14 | |
| 15 # Models a general purpose register or memory operand. | |
| 16 # Size is defined by the computed operand size. | |
| 17 E_Operand | |
| 18 | |
| 19 # Models an 8-bit general-purpose register or memory | |
| 20 # operand. Intel's notation is r/m8. | |
| 21 Eb_Operand | |
| 22 | |
| 23 # Models a 16-bit general-purpose register or memory | |
| 24 # operand. Intel's notation is r/m16 | |
| 25 Ew_Operand | |
| 26 | |
| 27 # Models a 32-bit general-purpose register or memory | |
| 28 # operand. Intel's notation is r/m32. | |
| 29 Ev_Operand | |
| 30 | |
| 31 # Models a 64-bit general-purpose register or memory | |
| 32 # operand. Intel's notation is r/m64. | |
| 33 Eo_Operand | |
| 34 | |
| 35 # Models a 128-bit double-quadword register or memory | |
| 36 # operand. | |
| 37 Edq_Operand | |
| 38 | |
| 39 # Note: The instruction decoder may count on the fact that the G_Operand | |
| 40 # values are contiguous, in the order specified. | |
| 41 | |
| 42 # General purpose register specified by the ModRm reg field. | |
| 43 G_Operand | |
| 44 | |
| 45 # Models an 8-bit general purpose register or memory operand in | |
| 46 # in the Modrm byte. | |
| 47 # Intel's notation is r8. | |
| 48 Gb_Operand | |
| 49 | |
| 50 # Models a 16-bit general purpose register operand. | |
| 51 # Intel's notation is r16. | |
| 52 Gw_Operand | |
| 53 | |
| 54 # Models a 32-bit general-purpose register operand. | |
| 55 # Intel's notation is r32 | |
| 56 Gv_Operand | |
| 57 | |
| 58 # Models a 64 bit general-purpose register operand. | |
| 59 # Intel's notation is r64. | |
| 60 Go_Operand | |
| 61 | |
| 62 # Models a 128-bit general purpose register or memory operand. | |
| 63 Gdq_Operand | |
| 64 | |
| 65 # Models a G operand which is combined with a segment register to generate a seg
ment address | |
| 66 # The segment register used is based on the mnemonic name of the instruction. | |
| 67 Seg_G_Operand | |
| 68 | |
| 69 # Models registers using the difference in the opcode base, from the opcode | |
| 70 # value. | |
| 71 G_OpcodeBase | |
| 72 | |
| 73 # Note: The instruction decoder may count on the fact that the I_Operand | |
| 74 # values are contiguous, in the order specified. | |
| 75 | |
| 76 # Model an immediate value. Size is defined by the | |
| 77 # computed operand size. | |
| 78 I_Operand | |
| 79 | |
| 80 # An immediate 8-bit value. Intel's notation is imm8. | |
| 81 Ib_Operand | |
| 82 | |
| 83 # An immediate 16-bit value. Intel's notation is imm16. | |
| 84 Iw_Operand | |
| 85 | |
| 86 # An immediate 32-bit value. Intel's notation is imm32. | |
| 87 Iv_Operand | |
| 88 | |
| 89 # An immediate 64-bit value. Intel's notation is imm64. | |
| 90 Io_Operand | |
| 91 | |
| 92 # Model the 2n'd immediate value. Size defined by the OpcodeHasImmed2_x flag. | |
| 93 I2_Operand | |
| 94 | |
| 95 # Note: The instruction decoder may count on the fact that the J_Operand | |
| 96 # values are contiguous, in the order specified. | |
| 97 | |
| 98 # A relative address to branch to. Size is defined by | |
| 99 # the computed operand size. | |
| 100 J_Operand | |
| 101 | |
| 102 # A relative address (range 128 before, 127 after) the | |
| 103 # end of the instruction. Intel's notation is rel8. | |
| 104 Jb_Operand | |
| 105 | |
| 106 # A relative address that is 16 bits long (operand size). | |
| 107 # Intel's notation is rel16 | |
| 108 Jw_Operand | |
| 109 | |
| 110 # A relative address that is 32 bits long (operand size). | |
| 111 # Intel's notation is rel32. | |
| 112 Jv_Operand | |
| 113 | |
| 114 # Note: The instruction decoder may count on the fact that the M_Operand | |
| 115 # values are contiguous, in the order specified. | |
| 116 | |
| 117 # A 16, 32, or 64 bit operand in memory. ??? | |
| 118 # Intel's notation is m. Size is defined by the | |
| 119 # computed operand size. | |
| 120 M_Operand | |
| 121 | |
| 122 # A 8-bit operand in memory pointerd to by the DS:(E)Si or | |
| 123 # ES:(E)DI registers. In 64-bit mode, it is pointed to | |
| 124 # by the RSI or RDI registers. Intel's notation is m8. | |
| 125 Mb_Operand | |
| 126 | |
| 127 # A 16-bit operand in memory pointed to by the DS:(E)SI | |
| 128 # or ES:(E)DI registers. Intel's notation is m16. | |
| 129 Mw_Operand | |
| 130 | |
| 131 # A 32-bit operand in memory pointed to by the DS:(E)SI | |
| 132 # or ES:(E)DI registers. Intel's notation is m32. | |
| 133 Mv_Operand | |
| 134 | |
| 135 # A 64-bit operand in memory. Intel's notation is m64. | |
| 136 Mo_Operand | |
| 137 | |
| 138 # A 128-bit operand in memory. Intel's notation is m128. | |
| 139 # AMD's notation is Mdq. | |
| 140 # Note: Because the size is the same, Mdq_Operand is a synonym for Mpd_Operand | |
| 141 # and Mps_Operand. | |
| 142 Mdq_Operand | |
| 143 | |
| 144 # A memory operand containing a far pointer composed of | |
| 145 # a 16-bit selector and a 16 bit offset. Intel's notation | |
| 146 # is m16:16. | |
| 147 Mpw_Operand | |
| 148 | |
| 149 # A memory operand containing a far pointer composed of | |
| 150 # a 16 bit selector and a 32 bit offset. Intel's notation | |
| 151 # is m16:32. | |
| 152 Mpv_Operand | |
| 153 | |
| 154 # A memory operand containing a far pointer composed of | |
| 155 # a 16 bit selector and a 64 bit offset. Intel's notation | |
| 156 # is m16:64. | |
| 157 Mpo_Operand | |
| 158 | |
| 159 # Like E_Operand, but uses MMX registers instead. | |
| 160 Mmx_E_Operand | |
| 161 | |
| 162 # Pseudonym for Mxx_E_Operand that automatically adds | |
| 163 # OpFlag(ModRmModIs0x3). | |
| 164 Mmx_N_Operand | |
| 165 | |
| 166 # Like G_Operand, but uses MMX registers instead. | |
| 167 Mmx_G_Operand | |
| 168 | |
| 169 # Like Mmx_G_Operand, but size is always 32 bits. | |
| 170 Mmx_Gd_Operand | |
| 171 | |
| 172 # Like E_Operand, but uses XMM registers instead. | |
| 173 Xmm_E_Operand | |
| 174 | |
| 175 # A 64-bit Xmm value, as defined by Xmm_E_Operand | |
| 176 Xmm_Eo_Operand | |
| 177 | |
| 178 # Like G_Operand, but uses XMM registers instead. | |
| 179 Xmm_G_Operand | |
| 180 | |
| 181 # A 64-bit Xmm value, as defined by Xmm_G_operand. | |
| 182 Xmm_Go_Operand | |
| 183 | |
| 184 # Control register specified by the ModRm reg field. | |
| 185 C_Operand | |
| 186 | |
| 187 # Debug register specified by the ModRm reg field. | |
| 188 D_Operand | |
| 189 | |
| 190 # Note: The instruction decoder may count on the fact that the O_Operand | |
| 191 # values are contiguous, in the order specified. | |
| 192 | |
| 193 # A memory offset. Size is defined by the computed operand size. | |
| 194 O_Operand | |
| 195 | |
| 196 # A memory 8-bit offset. Intel's notation is moffs8. | |
| 197 Ob_Operand | |
| 198 | |
| 199 # A memory 16-bit offset. Intel's notation is moffs16. | |
| 200 Ow_Operand | |
| 201 | |
| 202 # A memory 32-bit offset. Intel's notation is moffs32. | |
| 203 Ov_Operand | |
| 204 | |
| 205 # A memory 64-bit offset. Intel's notation is moffs64. | |
| 206 Oo_Operand | |
| 207 | |
| 208 # A segment register. The segment register bit assignments | |
| 209 # are ES=0, CS=1, SS=2, DS=3, FS=4, GS=5. Intel's notation | |
| 210 # is Sreg. | |
| 211 S_Operand | |
| 212 | |
| 213 # A Floating point ST register enocoded in opcode byte. | |
| 214 St_Operand | |
| 215 | |
| 216 # Note: The instruction decoder may count on the fact that the list | |
| 217 # of register values are contiguous, in the order specified. | |
| 218 | |
| 219 # Unknown register - Used if actual register can't | |
| 220 # be determined by the instruction decoder. | |
| 221 RegUnknown | |
| 222 RegAL # 8-bit registers in 32-bit and 64-bit modes. | |
| 223 RegBL | |
| 224 RegCL | |
| 225 RegDL | |
| 226 | |
| 227 RegAH # Additional 8-bit regisister in 32-bit mode. | |
| 228 RegBH | |
| 229 RegCH | |
| 230 RegDH | |
| 231 | |
| 232 RegDIL # Additional 8-bit registers in 64-bit mode. | |
| 233 RegSIL | |
| 234 RegBPL | |
| 235 RegSPL | |
| 236 # Note: Intel manual claims that r8l..r15l should be used. However, AMD | |
| 237 # manual and (xed from Intel) uses r8b..r15b. Therefore we will use the | |
| 238 # latter. | |
| 239 RegR8B | |
| 240 RegR9B | |
| 241 RegR10B | |
| 242 RegR11B | |
| 243 RegR12B | |
| 244 RegR13B | |
| 245 RegR14B | |
| 246 RegR15B | |
| 247 | |
| 248 RegAX # 16 bit registers in 32-bit and 64-bit modes. | |
| 249 RegBX | |
| 250 RegCX | |
| 251 RegDX | |
| 252 RegSI | |
| 253 RegDI | |
| 254 RegBP | |
| 255 RegSP | |
| 256 | |
| 257 RegR8W # 16 bit registers only in 64-bit mode. | |
| 258 RegR9W | |
| 259 RegR10W | |
| 260 RegR11W | |
| 261 RegR12W | |
| 262 RegR13W | |
| 263 RegR14W | |
| 264 RegR15W | |
| 265 | |
| 266 RegEAX # General 32-bit registers in 32-bit and 64-bit modes. | |
| 267 RegEBX | |
| 268 RegECX | |
| 269 RegEDX | |
| 270 RegESI | |
| 271 RegEDI | |
| 272 RegEBP | |
| 273 RegESP | |
| 274 | |
| 275 RegR8D # Additional 32-bit registers in 64-bit mode. | |
| 276 RegR9D | |
| 277 RegR10D | |
| 278 RegR11D | |
| 279 RegR12D | |
| 280 RegR13D | |
| 281 RegR14D | |
| 282 RegR15D | |
| 283 | |
| 284 RegCS # 16-bit segment registers in 32-bit and 64-bit modes. | |
| 285 RegDS | |
| 286 RegSS | |
| 287 RegES | |
| 288 RegFS | |
| 289 RegGS | |
| 290 | |
| 291 RegCR0 # Control registers in 32-bit and 64-bit modes. | |
| 292 RegCR1 | |
| 293 RegCR2 | |
| 294 RegCR3 | |
| 295 RegCR4 | |
| 296 RegCR5 | |
| 297 RegCR6 | |
| 298 RegCR7 | |
| 299 RegCR8 | |
| 300 RegCR9 | |
| 301 RegCR10 | |
| 302 RegCR11 | |
| 303 RegCR12 | |
| 304 RegCR13 | |
| 305 RegCR14 | |
| 306 RegCR15 | |
| 307 | |
| 308 RegDR0 # Debug registers in 32-bit and 64-bit modes. | |
| 309 RegDR1 | |
| 310 RegDR2 | |
| 311 RegDR3 | |
| 312 RegDR4 | |
| 313 RegDR5 | |
| 314 RegDR6 | |
| 315 RegDR7 | |
| 316 RegDR8 | |
| 317 RegDR9 | |
| 318 RegDR10 | |
| 319 RegDR11 | |
| 320 RegDR12 | |
| 321 RegDR13 | |
| 322 RegDR14 | |
| 323 RegDR15 | |
| 324 | |
| 325 RegEFLAGS # Program status and control register in 32-bit mode. | |
| 326 RegRFLAGS # Program status and control register in 64-bit mode. | |
| 327 | |
| 328 RegEIP # Instruction pointer in 32-bit mode. | |
| 329 RegRIP # Instruction pointer in 64-bit mode. | |
| 330 | |
| 331 RegRAX # General purpose 64-bit registers in 64-bit mode. | |
| 332 RegRBX | |
| 333 RegRCX | |
| 334 RegRDX | |
| 335 RegRSI | |
| 336 RegRDI | |
| 337 RegRBP | |
| 338 RegRSP | |
| 339 RegR8 | |
| 340 RegR9 | |
| 341 RegR10 | |
| 342 RegR11 | |
| 343 RegR12 | |
| 344 RegR13 | |
| 345 RegR14 | |
| 346 RegR15 | |
| 347 | |
| 348 # Use EIP or RIP, based on address size - EIP in 32-bits, RIP in 64-bits. | |
| 349 RegREIP | |
| 350 | |
| 351 # The following define the choice of register, based on operand size, as in the | |
| 352 # following table: | |
| 353 # Entry 16 bits 32 bits 64 bits | |
| 354 # ------------------------------------- | |
| 355 # REAX AX EAX RAX | |
| 356 # REBX BX EBX RBX | |
| 357 # RECX CX ECX RCX | |
| 358 # REDX DX EDX RDX | |
| 359 # RESP SP ESP RSP | |
| 360 # REBP BP EBP RSP | |
| 361 # RESI SI ESI RSI | |
| 362 # REDI DI EDI RDI | |
| 363 RegREAX | |
| 364 RegREBX | |
| 365 RegRECX | |
| 366 RegREDX | |
| 367 RegRESP | |
| 368 RegREBP | |
| 369 RegRESI | |
| 370 RegREDI | |
| 371 | |
| 372 # The following define the choice of register, based on address size, as in the | |
| 373 # following table: | |
| 374 # Entry 16 bits 32 bits 64 bits | |
| 375 # ------------------------------------- | |
| 376 # REAXa AX EAX RAX | |
| 377 RegREAXa | |
| 378 | |
| 379 # Use DS:(R,E)SI, like that specified in movsb, movsw, and movsd, and movsq | |
| 380 # instructions. | |
| 381 RegDS_ESI | |
| 382 # Use DS:(R,E)DI, like that specified in maskmovq and maskmovdqu instructions. | |
| 383 RegDS_EDI | |
| 384 # Use ES:(R,E)DI, like that specified in the insb, insw, and insd instructions. | |
| 385 RegES_EDI | |
| 386 # Use DS:(R,E)BX, like that specified in the xlat instruction. | |
| 387 RegDS_EBX, | |
| 388 | |
| 389 # Floating point stack registers. | |
| 390 RegST0 | |
| 391 RegST1 | |
| 392 RegST2 | |
| 393 RegST3 | |
| 394 RegST4 | |
| 395 RegST5 | |
| 396 RegST6 | |
| 397 RegST7 | |
| 398 | |
| 399 # MMX registers. | |
| 400 RegMMX0 | |
| 401 RegMMX1 | |
| 402 RegMMX2 | |
| 403 RegMMX3 | |
| 404 RegMMX4 | |
| 405 RegMMX5 | |
| 406 RegMMX6 | |
| 407 RegMMX7 | |
| 408 | |
| 409 # XMM registers. | |
| 410 RegXMM0 | |
| 411 RegXMM1 | |
| 412 RegXMM2 | |
| 413 RegXMM3 | |
| 414 RegXMM4 | |
| 415 RegXMM5 | |
| 416 RegXMM6 | |
| 417 RegXMM7 | |
| 418 RegXMM8 | |
| 419 RegXMM9 | |
| 420 RegXMM10 | |
| 421 RegXMM11 | |
| 422 RegXMM12 | |
| 423 RegXMM13 | |
| 424 RegXMM14 | |
| 425 RegXMM15 | |
| 426 | |
| 427 # One of the eight general purpose registers, less the stack pointer, based | |
| 428 # on operand size. | |
| 429 RegGP7 | |
| 430 | |
| 431 # Predefined constants. | |
| 432 Const_1 | |
| OLD | NEW |