golang.org/x/arch@v0.17.0/x86/xeddata/testdata/xed_objects.txt (about) 1 ------ empty input 2 ==== 3 [] 4 5 ------ only newlines 6 7 8 9 ==== 10 [] 11 12 ------ only comments and newlines 13 # { 14 # ICLASS : ADD 15 # } 16 # comment with leading space 17 ==== 18 [] 19 20 ------ join lines 21 { 22 ICLASS : i\ 23 cla\ 24 ss1 25 VERSION : 1.\ 26 0 27 FLAGS:\ 28 \ 29 \ 30 NOP 31 32 REAL_OPCODE : \Y 33 CPL : \3 34 PATTERN: A B 35 OPERANDS: 36 } 37 ==== 38 [{ 39 "Iclass": "i cla ss1", 40 "Version": "1.0", 41 "Flags": "NOP", 42 "RealOpcode": "\\Y", 43 "CPL": "\\3", 44 "Pattern": "A B" 45 }] 46 47 ------ 1 variant; no iform 48 { 49 ICLASS:iclass1 # comment 50 DISASM : disasm1 51 52 PATTERN :pat1 pat1 53 OPERANDS : ops1 ops1 54 } 55 # comment 56 57 { # comment 58 # comment 59 ICLASS : iclass2 60 OPERANDS:ops2 61 PATTERN:pat2 # comment 62 } 63 ==== 64 [{ 65 "Iclass": "iclass1", 66 "Disasm": "disasm1", 67 "Pattern": "pat1 pat1", 68 "Operands": "ops1 ops1" 69 }, { 70 "Iclass": "iclass2", 71 "Operands": "ops2", 72 "Pattern": "pat2" 73 }] 74 75 ------ 2 variants; no iform 76 { 77 PATTERN : pat1_1 78 COMMENT : comment1 79 OPERANDS : ops1_1 80 OPERANDS : ops1_2 81 PATTERN : pat1_2 82 } 83 { 84 PATTERN : pat2_1 85 PATTERN : pat2_2 86 OPERANDS : ops2_1 87 OPERANDS : ops2_2 88 } 89 ==== 90 [{ 91 "Comment": "comment1", 92 "Pattern": "pat1_1", 93 "Operands": "ops1_1" 94 }, { 95 "Comment": "comment1", 96 "Pattern": "pat1_2", 97 "Operands": "ops1_2" 98 }, { 99 "Pattern": "pat2_1", 100 "Operands": "ops2_1" 101 }, { 102 "Pattern": "pat2_2", 103 "Operands": "ops2_2" 104 }] 105 106 ------ 3 variants 107 { 108 109 PATTERN : pat1_1 110 OPERANDS : ops1_1 111 IFORM : iform1_1 112 113 PATTERN : pat1_2# comment 114 OPERANDS : ops1_2# comment 115 IFORM : iform1_2# comment 116 117 # comment 118 PATTERN : pat1_3 119 OPERANDS : ops1_3 120 IFORM : iform1_3 121 122 } 123 124 { 125 PATTERN : pat2_1 126 OPERANDS : ops2_1 127 IFORM : iform2_1 128 PATTERN : pat2_2 129 OPERANDS : ops2_2 130 PATTERN : pat2_3 131 OPERANDS : ops2_3 132 } 133 ==== 134 [{ 135 "Iform": "iform1_1", 136 "Pattern": "pat1_1", 137 "Operands": "ops1_1" 138 }, { 139 "Iform": "iform1_2", 140 "Pattern": "pat1_2", 141 "Operands": "ops1_2" 142 }, { 143 "Iform": "iform1_3", 144 "Pattern": "pat1_3", 145 "Operands": "ops1_3" 146 }, { 147 "Iform": "iform2_1", 148 "Pattern": "pat2_1", 149 "Operands": "ops2_1" 150 }, { 151 "Pattern": "pat2_2", 152 "Operands": "ops2_2" 153 }, { 154 "Pattern": "pat2_3", 155 "Operands": "ops2_3" 156 }] 157 158 ------ stable and unstable instructions (REAL_OPCODE) 159 { 160 ICLASS: STABLE 161 REAL_OPCODE: Y 162 PATTERN : x y z 163 OPERANDS : 164 } 165 { 166 ICLASS: UNSTABLE 167 REAL_OPCODE: N 168 PATTERN : x y z 169 OPERANDS : 170 } 171 ==== 172 [{ 173 "Iclass": "STABLE", 174 "RealOpcode": "Y", 175 "Pattern": "x y z", 176 "Operands": "" 177 }, { 178 "Iclass": "UNSTABLE", 179 "RealOpcode": "N", 180 "Pattern": "x y z", 181 "Operands": "" 182 }] 183 184 ------ AVXAES objects 185 # Emitting VAESENCLAST 186 { 187 ICLASS : VAESENCLAST 188 EXCEPTIONS: avx-type-4 189 CPL : 3 190 CATEGORY : AES 191 EXTENSION : AVXAES 192 PATTERN : VV1 0xDD V66 V0F38 MOD[0b11] MOD=3 REG[rrr] RM[nnn] VL128 193 OPERANDS : REG0=XMM_R():w:dq REG1=XMM_N():r:dq REG2=XMM_B():r:dq 194 PATTERN : VV1 0xDD V66 V0F38 MOD[mm] MOD!=3 REG[rrr] RM[nnn] MODRM() VL128 195 OPERANDS : REG0=XMM_R():w:dq REG1=XMM_N():r:dq MEM0:r:dq 196 } 197 # Emitting VAESDEC 198 { 199 ICLASS : VAESDEC 200 EXCEPTIONS: avx-type-4 201 CPL : 3 202 CATEGORY : AES 203 EXTENSION : AVXAES 204 PATTERN : VV1 0xDE V66 V0F38 MOD[0b11] MOD=3 REG[rrr] RM[nnn] VL128 205 OPERANDS : REG0=XMM_R():w:dq REG1=XMM_N():r:dq REG2=XMM_B():r:dq 206 PATTERN : VV1 0xDE V66 V0F38 MOD[mm] MOD!=3 REG[rrr] RM[nnn] MODRM() VL128 207 OPERANDS : REG0=XMM_R():w:dq REG1=XMM_N():r:dq MEM0:r:dq 208 } 209 ==== 210 [{ 211 "Iclass": "VAESENCLAST", 212 "Exceptions": "avx-type-4", 213 "CPL": "3", 214 "Category": "AES", 215 "Extension": "AVXAES", 216 "Pattern": "VV1 0xDD V66 V0F38 MOD[0b11] MOD=3 REG[rrr] RM[nnn] VL128", 217 "Operands": "REG0=XMM_R():w:dq REG1=XMM_N():r:dq REG2=XMM_B():r:dq" 218 }, { 219 "Iclass": "VAESENCLAST", 220 "Exceptions": "avx-type-4", 221 "CPL": "3", 222 "Category": "AES", 223 "Extension": "AVXAES", 224 "Pattern": "VV1 0xDD V66 V0F38 MOD[mm] MOD!=3 REG[rrr] RM[nnn] MODRM() VL128", 225 "Operands": "REG0=XMM_R():w:dq REG1=XMM_N():r:dq MEM0:r:dq" 226 }, { 227 "Iclass": "VAESDEC", 228 "Exceptions": "avx-type-4", 229 "CPL": "3", 230 "Category": "AES", 231 "Extension": "AVXAES", 232 "Pattern": "VV1 0xDE V66 V0F38 MOD[0b11] MOD=3 REG[rrr] RM[nnn] VL128", 233 "Operands": "REG0=XMM_R():w:dq REG1=XMM_N():r:dq REG2=XMM_B():r:dq" 234 }, { 235 "Iclass": "VAESDEC", 236 "Exceptions": "avx-type-4", 237 "CPL": "3", 238 "Category": "AES", 239 "Extension": "AVXAES", 240 "Pattern": "VV1 0xDE V66 V0F38 MOD[mm] MOD!=3 REG[rrr] RM[nnn] MODRM() VL128", 241 "Operands": "REG0=XMM_R():w:dq REG1=XMM_N():r:dq MEM0:r:dq" 242 }] 243 244 ------ Two-word disasm 245 { 246 ICLASS : JMP_FAR 247 DISASM_INTEL: jmp far 248 DISASM_ATTSV: ljmp 249 CPL : 3 250 CATEGORY : UNCOND_BR 251 ATTRIBUTES : FAR_XFER NOTSX 252 EXTENSION : BASE 253 ISA_SET : I86 254 PATTERN : 0xEA not64 BRDISPz() UIMM16() 255 OPERANDS : PTR:r:p IMM0:r:w REG0=XED_REG_EIP:w:SUPP 256 } 257 ==== 258 [{ 259 "Iclass": "JMP_FAR", 260 "DisasmIntel": "jmp far", 261 "DisasmATTSV": "ljmp", 262 "CPL": "3", 263 "Attributes": "FAR_XFER NOTSX", 264 "Extension": "BASE", 265 "ISASet": "I86", 266 "Pattern": "0xEA not64 BRDISPz() UIMM16()", 267 "Operands": "PTR:r:p IMM0:r:w REG0=XED_REG_EIP:w:SUPP" 268 }] 269 270 ------ INVALID key token 271 { 272 FOO : 111 273 } 274 ==== 275 unknown key token: FOO 276 277 ------ INVALID unterminated object 278 { 279 ==== 280 no matching '}' found 281 282 ------ INVALID pat+ops 283 { 284 ICLASS: foobar 285 PATTERN : 1 286 PATTERN : 2 287 OPERANDS : 3 288 } 289 ==== 290 foobar: OPERANDS and PATTERN lines mismatch