学习嵌入式的第三十九天——ARM——汇编
1、什么是立即数?如何判断某数是否是12位立即数?
立即数是在指令段中,无需存取直接使用的数,是指令的内置常量
判断:由于在32位arm架构中,立即数只占12位,其中高4位为旋转位(实际旋转次数位旋转位值*2),低8位为无符号数,
那么判断标准,一个数可不可以由一个8位数经过偶数次循环右移得到
2、b,bl,bx指令的区别是什么?
b是直接修改pc值进行跳转
bl是将下一条指令的地址保存在lr寄存器后再修改pc值进行跳转
bx是用lr中的值来修改pc值进行跳转
3、ARM内核采用的栈是哪种栈?
满减栈
满:栈顶指针指向的位置有值
减:栈底在高地址处,往低地址处生长
4、CPSR中条件标志位,分别在什么情况下被置位
N:当上一次算术逻辑运算结果的第32位为1时,N置1
Z:当上一次算术逻辑运算结果为0(所有bit位都是0)时,Z置1
C:无符号数,当上一次算术逻辑运算发生进位或者没有借位时置1
V:有符号数,当上一次算术逻辑运算的最高位有溢出时(两个正数相加得负数,两个负数相加得正数)置1