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