* Added build files [Capstone to Zydis] * x86 Analysis [Capstone to Zydis] * Changed x86 RzIL [Capstone to Zydis] * Changed asm and arch files [Capstone to Zydis] * Compilation, build error and test fixes [Capstone to Zydis] * Test changes [Capstone to Zydis] * Remaining changes [Capstone to Zydis] * Added BE support [Capstone to Zydis] --------- Co-authored-by: tushar3q34 <tushar3q34@gmail.com>
91 lines
No EOL
2.2 KiB
C
91 lines
No EOL
2.2 KiB
C
// SPDX-FileCopyrightText: 2012-2020 houndthe <cgkajm@gmail.com>
|
|
// SPDX-FileCopyrightText: 2024 Billow <billow.fun@gmail.com>
|
|
// SPDX-License-Identifier: LGPL-3.0-only
|
|
|
|
#ifndef X86_DWARF_REGNUM_TABLE_H
|
|
#define X86_DWARF_REGNUM_TABLE_H
|
|
|
|
#include <rz_types_base.h>
|
|
|
|
/* x86_64 https://software.intel.com/sites/default/files/article/402129/mpx-linux64-abi.pdf */
|
|
static const char *map_dwarf_reg_to_x86_64_reg(ut32 reg_num) {
|
|
switch (reg_num) {
|
|
case 0: return "rax";
|
|
case 1: return "rdx";
|
|
case 2: return "rcx";
|
|
case 3: return "rbx";
|
|
case 4: return "rsi";
|
|
case 5: return "rdi";
|
|
case 6: return "rbp";
|
|
case 7: return "rsp";
|
|
case 8: return "r8";
|
|
case 9: return "r9";
|
|
case 10: return "r10";
|
|
case 11: return "r11";
|
|
case 12: return "r12";
|
|
case 13: return "r13";
|
|
case 14: return "r14";
|
|
case 15: return "r15";
|
|
case 17: return "xmm0";
|
|
case 18: return "xmm1";
|
|
case 19: return "xmm2";
|
|
case 20: return "xmm3";
|
|
case 21: return "xmm4";
|
|
case 22: return "xmm5";
|
|
case 23: return "xmm6";
|
|
case 24: return "xmm7";
|
|
default:
|
|
return "unsupported_reg";
|
|
}
|
|
}
|
|
|
|
/* x86 https://01.org/sites/default/files/file_attach/intel386-psabi-1.0.pdf */
|
|
static const char *map_dwarf_reg_to_x86_reg(ut32 reg_num) {
|
|
switch (reg_num) {
|
|
case 0: /* fall-thru */
|
|
case 8: return "eax";
|
|
case 1: return "edx";
|
|
case 2: return "ecx";
|
|
case 3: return "ebx";
|
|
case 4: return "esp";
|
|
case 5: return "ebp";
|
|
case 6: return "esi";
|
|
case 7: return "edi";
|
|
case 9: return "EFLAGS";
|
|
case 11: return "st0";
|
|
case 12: return "st1";
|
|
case 13: return "st2";
|
|
case 14: return "st3";
|
|
case 15: return "st4";
|
|
case 16: return "st5";
|
|
case 17: return "st6";
|
|
case 18: return "st7";
|
|
case 21: return "xmm0";
|
|
case 22: return "xmm1";
|
|
case 23: return "xmm2";
|
|
case 24: return "xmm3";
|
|
case 25: return "xmm4";
|
|
case 26: return "xmm5";
|
|
case 27: return "xmm6";
|
|
case 28: return "xmm7";
|
|
case 29: return "mm0";
|
|
case 30: return "mm1";
|
|
case 31: return "mm2";
|
|
case 32: return "mm3";
|
|
case 33: return "mm4";
|
|
case 34: return "mm5";
|
|
case 35: return "mm6";
|
|
case 36: return "mm7";
|
|
case 40: return "es";
|
|
case 41: return "cs";
|
|
case 42: return "ss";
|
|
case 43: return "ds";
|
|
case 44: return "fs";
|
|
case 45: return "gs";
|
|
default:
|
|
rz_warn_if_reached();
|
|
return "unsupported_reg";
|
|
}
|
|
}
|
|
|
|
#endif // X86_DWARF_REGNUM_TABLE_H
|