The current x86 instruction decoding table in dbt uses a ad-hoc scheme which just supplies the information needed by the dynamic binary translator. It only contains about the encoding format of the instructions, like whether the ModR/M part is present, how many immediate bytes it contains, etc.
State of the art decoding tables should also allow us to inspect the type and usage of the opcodes, such as the number of opcodes, the type of opcodes (general purpose registers, or SIMD registers, etc). This will enable us to do two very important things which are impossible in current version:
Implement a disassembler for the upcoming integrated flog debugger.
Implement more complex code transformation rules. For supporting x64 we need to overcome the redzone problem, which requires us to inspect and patch all usage of RSP registers.
The current x86 instruction decoding table in dbt uses a ad-hoc scheme which just supplies the information needed by the dynamic binary translator. It only contains about the encoding format of the instructions, like whether the ModR/M part is present, how many immediate bytes it contains, etc.
State of the art decoding tables should also allow us to inspect the type and usage of the opcodes, such as the number of opcodes, the type of opcodes (general purpose registers, or SIMD registers, etc). This will enable us to do two very important things which are impossible in current version: