You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
_xeroxz 305167eb51
init commit
3 years ago
..
0001-capstone-generate-GenRegisterInfo.inc.patch init commit 3 years ago
0002-capstone-generate-GenSubtargetInfo.inc.patch init commit 3 years ago
0003-capstone-generate-GenInstrInfo.inc.patch init commit 3 years ago
0004-capstone-generate-GenDisassemblerTables.inc.patch init commit 3 years ago
0005-capstone-generate-GenAsmWriter.inc.patch init commit 3 years ago
0006-capstone-generate-MappingInsn.inc.patch init commit 3 years ago
0007-capstone-generate-GenInsnNameMaps.inc.patch init commit 3 years ago
README.md init commit 3 years ago

README.md

How to update SystemZ tables.

  • Checkout LLVM. Patches are tested on commit c13d5969^, because c13d5969 changed the decode table format.
  • Apply patches from the current directory.
  • Run tablegen.
        cd $LLVM
        mkdir build
        cd build
        cmake -DCMAKE_CXX_FLAGS=-DCAPSTONE ..
        make SystemZCommonTableGen -j$(getconf _NPROCESSORS_ONLN)
    
  • Copy .inc files.
        cp arch/SystemZ/SystemZGenInsnNameMaps.inc \
           arch/SystemZ/SystemZGenInsnNameMaps.inc.old
        for inc in $(cd arch/SystemZ && ls *.inc); do
          cp $LLVM/build/lib/Target/SystemZ/$inc arch/SystemZ/
        done
    
  • Fixup SystemZGenInsnNameMaps.inc.
        comm -1 -3 \
            <(grep SYSZ_INS_ <arch/SystemZ/SystemZGenInsnNameMaps.inc.old \
              | sort -u) \
            <(grep SYSZ_INS_ <arch/SystemZ/SystemZGenInsnNameMaps.inc \
              | sort -u) \
            >arch/SystemZ/SystemZGenInsnNameMaps.inc.new
        cat arch/SystemZ/SystemZGenInsnNameMaps.inc.old \
            arch/SystemZ/SystemZGenInsnNameMaps.inc.new \
            >arch/SystemZ/SystemZGenInsnNameMaps.inc
    
  • Add new groups, insns, registers and formats.
    • include/capstone/systemz.h
      • enum sysz_insn:
            comm -1 -3 \
                <(perl -ne 'if (/(SYSZ_INS_.+),/) { print "\t$1,\n" }' \
                  <include/capstone/systemz.h | sort -u) \
                <(perl -ne 'if (/(SYSZ_INS_.+),/) { print "\t$1,\n" }' \
                  <arch/SystemZ/SystemZMappingInsn.inc | sort -u)
        
      • enum sysz_insn_group:
            perl -ne 'if (/(SYSZ_GRP_.*?),/) { print "\t$1,\n"; }' < \
                arch/SystemZ/SystemZMappingInsn.inc | sort -u
        
    • arch/SystemZ/SystemZDisassembler.c
    • arch/SystemZ/SystemZInstPrinter.c
    • arch/SystemZ/SystemZMCTargetDesc.c
    • arch/SystemZ/SystemZMCTargetDesc.h
    • arch/SystemZ/SystemZMapping.c
      • enum group_name_maps:
            perl -ne 'if (/(SYSZ_GRP_(.*?)),/) { print "\t{ $1, \"" . lc($2) . "\" },\n"; }' \
                arch/SystemZ/SystemZMappingInsn.inc | sort -u