2025-11-20 04:50:08
先看指令前缀有没有小符号比如0x开头表示十六进制操作数如果是寄存器或内存地址说明是位操作指令比如BIC R0 R1这种前缀是BIC操作数是寄存器说明是位操作。通用指令像ADD R0 R1 R2前缀是ADD操作数是寄存器说明是算术运算。查指令手册时注意区分操作数类型寄存器地址和内存地址会改变判断结果。
为什么这样判断呢?根据ARM文档数据位操作指令占所有指令的5%且这类指令必须操作寄存器或内存单元。比如遇到BIC R0 R1这种指令前缀是BIC操作数是寄存器说明是位操作。而像ADD R0 R1 R2这种指令前缀是ADD操作数是寄存器说明是算术运算。查指令手册时发现位操作指令的操作数类型必须是寄存器或内存地址而通用指令可以操作寄存器或内存地址。比如ARM手册明确指出位操作指令如BIS BIC BSL的操作数只能是寄存器或内存地址而通用指令ADD SUB等可以操作寄存器或内存地址。因此通过前缀和操作数类型就能区分这两种指令。
本题链接: