asmdb
asmdb copied to clipboard
Instructions missed implicit operands info
popa, popad pop 8 generals pusha, pushad push 8 generals
Maybe need a new registers flag string? seems "all" not an option, because call instruction and others maybe redefine the semantics of "all" xx/yx/zx like series for cases?
And vzeroall vzeroupper need a "all" kind of symbol to flag it.
There are many ins like the following in X64 which operand modifier is dx:zsi and like
["movsd" , "X:<es:zdi>, X:<ds:zsi>" , "NONE" , "A5" , "ANY REP REPNE DF=R"],
["movsq" , "X:<es:zdi>, X:<ds:zsi>" , "NONE" , "REX.W A5" , "X64 REP REPNE DF=R"],
I guess, since REX.W limits the instruction, so the register flag z- prefix is not necessary, it's fine that to just use r- prefix. And ecds-segment ignored in bits64 mode, it should be ignored.
["movsq" , "X:<rdi>, X:<rsi>" , "NONE" , "REX.W A5" , "X64 REP REPNE DF=R"],
?
["syscall" , "w:<rcx>,w:<r11>" , "NONE" , "0F 05" , "X64 Volatile"],
Hey good ideas, however, I think asmdb needs the concept of "hidden" registers, that's how it's called in other tools - hidden is everything that is not mentioned in operands and is accessed by the instruction. The only question is how to add it to the database.
Maybe something like to the metadata?
HIDDEN=W:rcx,W:r11 or HIDDEN=W:zmm0..15[63:32]
Undecided, thinking about it, but yeah I think this is necessary for tooling.
one point, prefix?
[RWwXx-~:]operand
- for implicit, instead of <>
~ for commutative instead of ↔