2019-10-15 17:59发布
xuande 发表于 2017-1-9 11:37 ARM汇编指令中使用到的立即数是是由一个8位的立即数循环左移偶数位得到 —— 这句话哪里看到的?十有八 ...
最多设置5个标签!
“MOV R0,#0xfffffffe”会被编译器转成“MVN R0, #0x00000001”吧
修正:应该是汇编器Assembler不是编译器Compiler
ARM汇编指令中使用到的立即数是是由一个8位的立即数循环左移偶数位得到 —— 这句话哪里看到的?十有八九断章取义了。
MOV R0,#0xfffffffe —— 这条指令哪里体现移位了?
32位ARM指令的总长度是32位,里面是放不下完整的32位立即数的。处理方法是用12位,其中8位表示立即数,另外4位表示将它右移多少位。
对于“MOV R0,#0xfffffffe”,
移位是在指令机器码解码的时候完成的。
这样一条语句,汇编器会自动处理成类似于“把0x01循环右移0位,然后取反赋给R0”。
一周热门 更多>