ARM寄存器与栈指针间MOV指令传输方向疑问
ARM MOV(与SP间传输)指令的方向判定
方向判定规则
这个和SP交互的MOV指令本质是立即数ADD指令的别名,它必须同时指定两个操作数——SP和一个通用寄存器,不存在“仅含一个寄存器操作数”的合法写法:- 指令写为
MOV SP, <Rn>时:将通用寄存器<Rn>的值传输到SP(寄存器→SP) - 指令写为
MOV <Rn>, SP时:将SP的值传输到通用寄存器<Rn>(SP→寄存器)
- 指令写为
关于默认方向
不存在“无法确定方向”的场景,因为合法指令必须明确两个操作数的位置,没有单操作数的格式,自然也不需要默认方向。
补充:从底层实现看,该指令是
ADD指令的变形,比如MOV SP, R0等价于ADD SP, R0, #0,MOV R0, SP等价于ADD R0, SP, #0,操作数顺序直接决定了数据的传输方向。
内容的提问来源于stack exchange,提问作者Ryan
相关产品推荐
相关产品推荐

