Describe the bug
The ARM64 Q? registers are missing from the available register names, so you cannot simply use ql.reg.read("Q0") to read the Q0 register. In contrast, you can use ql.reg.read("X0") to read the X0 register.
Sample Code
import qiling
ql = qiling.Qiling(code=b"\0", archtype=qiling.const.QL_ARCH.ARM64, ostype='linux')
for i in range(32):
ql.reg.read(f"Q{i}") # doesn't work
# the below two lines would work
# import unicorn
# ql.reg.read(getattr(unicorn.arm64_const, f"UC_ARM64_REG_Q{i}"))
Actual behavior
Traceback (most recent call last):
File "main.py", line 6, in <module>
ql.reg.read(f"Q{i}") # doesn't work
File "~/.local/lib/python3.10/site-packages/qiling/arch/register.py", line 61, in read
register = self.register_mapping[register.lower()]
KeyError: 'q0'
Expected behavior
The Q[i] register should be read. That is, ql.reg.read(f"Q{i}") in the above script should return the same value as the line below that uses the unicorn constant.
It would be nice if the V?, D?, S?, H? and B? registers were also added.
Describe the bug
The ARM64
Q?registers are missing from the available register names, so you cannot simply useql.reg.read("Q0")to read theQ0register. In contrast, you can useql.reg.read("X0")to read theX0register.Sample Code
Actual behavior
Expected behavior
The
Q[i]register should be read. That is,ql.reg.read(f"Q{i}")in the above script should return the same value as the line below that uses the unicorn constant.It would be nice if the
V?,D?,S?,H?andB?registers were also added.