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
|
3 years ago | |
---|---|---|
.. | ||
0001-capstone-generate-GenRegisterInfo.inc.patch | 3 years ago | |
0002-capstone-generate-GenSubtargetInfo.inc.patch | 3 years ago | |
0003-capstone-generate-GenInstrInfo.inc.patch | 3 years ago | |
0004-capstone-generate-GenDisassemblerTables.inc.patch | 3 years ago | |
0005-capstone-generate-GenAsmWriter.inc.patch | 3 years ago | |
0006-capstone-generate-MappingInsn.inc.patch | 3 years ago | |
0007-capstone-generate-GenInsnNameMaps.inc.patch | 3 years ago | |
README.md | 3 years ago |
README.md
How to update SystemZ tables.
- Checkout LLVM. Patches are tested on commit
c13d5969^
, becausec13d5969
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