沃森轮毂正品怎么分别:一条arm 指令如何判断其操作数是有符号数还是无符号数?

来源:百度文库 编辑:神马品牌网 时间:2024/05/04 05:16:26
还是根本不作区别?我们都知道高级语言是通过变量声明做到的,arm是如何做到的?(不用高级语言写,直接用指令写)

你好,我是学嵌入式的,刚学过arm汇编,对与这个问题.应该是不做区分的,
我们这样来看
0xFFFFFFFFFFFFFFFF=-1也==18446744073709551615
它在储存区域里都是一样的,arm汇编不能声明和定义它,
但是我做了个这样的实验
AREA A,CODE,READONLY
ENTRY
START
MOV R1,#-2;
MOV R2,#3
ADD R3,R1,R2
end
B end

END

最后R3的结果1,cpsr没有反应,也就是它做出了处理,为什么会这样呢.我个人研究理解是编译器做的

一条arm指令分为几个部分
<opcode> {<conde>} {s} <rd>,<rn>,<op2>
你发现没有一条arm指令32位有多少位用来存rd,rn,op2 操作数只有8位 也就是最大只能用0xff的立即数,但是arm指令也作了一定的改进,就是循环左移,
也就是你可以用一个最多只有连续两位不等于0的16进制数.如0xff00000,,0x00ff00
0xF100是对的,这样的立即数是会抱错的-->0xabc,0x0b010

也就是你用mov付值的时候 可以这样做,MOV R1,#-1
但你不能这样MOV R1,#0xFFFFFFFFFFFFFFFF
可能是编译器在发现一个负数与正数相加的时候就做了改动

以后大家相互学习...QQ:19999243