ARM开发day1

什么是立即数?如何判断某数是非法12位立即数?

立即数是直接嵌入在指令中的常数,不需要从内存或寄存器中读取。立即数由四位旋转位和八个数字位构成。

立即数:把某个数展开成2进制,该数必须存在一种循环右移(偶数位),使得移位后高24位全0,低位即为有效imm8

非法立即数:将32位数循环左移任意偶数次(0~30步),若无法得到一个8位范围内的数(即高24位全为0),则为非法12位立即数。

b,bl,bx指令的区别是什么?

b:不保存返回地址,直接跳转到目标地址

B<c> <label>

b fun <==> ldr pc, =fun

bl:跳转时将下一条指令的地址存储到lr中。

BL<c> <label>

bl fun

bx:不保存返回地址,仅跳转 + 切换指令集。

BX<c> <Rm>

bx lr <==> mov pc, lr

ARM内核采用的栈是哪种栈?

采用了满减栈

CPSR中条件标志位,分别在什么情况下被置位

  1. N: 符号标志位:上条指令执行结果最高位bit31为1,则 N = 1, 当结果作为有符号解释时为负值;
  2. Z: 零值标志位:上条指令执行结果为0(即bit0 - bit31 均为0),则 Z = 1;
  3. C: 进位标志位:进行无符号解读,如果在加法过程中进位(最高位向更高位进位)或者减法时没有借位,则为 C = 1,否则 C = 0
  4. V: 溢出标志位:进行有符号解读,是否发生溢出 -2^31 - 2^31-1(两个正数加得负数,两个负数加得正数)

arm汇编调用c语言函数以及c语言函数调用汇编编写的函数,函数参数和返回值如何处理?

ARM中将函数的参数和返回值在函数跳转时和地址一起存储在栈中,在返回该函数时取出,注意:函数的参数和返回值在存储时应按照固定的顺序存储,否则会造成参数混乱。

相关推荐
zlinear数据采集卡1 天前
数据采集卡从入门到精通(10):采样率与分辨率的核心关系——反比律、架构分布与过采样
arm开发·嵌入式硬件·算法·fpga开发·架构·开源
CIAS1 天前
uniontechos-server-20 1050 u2a pxe Server -x86 arm loongarch
arm开发
振南的单片机世界1 天前
推挽vs开漏:一个“强拉硬灌”,一个“只拉不管”
arm开发·stm32·单片机·嵌入式硬件
zlinear数据采集卡1 天前
数据采集卡从入门到精通(7):流水线型ADC——级级接力,高速与高精的平衡术
开发语言·arm开发·嵌入式硬件·fpga开发·c#
硅农程序猿2 天前
从需求到硅片| 一文讲清数字芯片设计流程
arm开发·硬件架构·risc-v
秋田君2 天前
QT_网络编程体系
网络·arm开发·qt
zlinear数据采集卡3 天前
D223上位机C#开发实战:从帧解析到波形显示的完整实现
开发语言·arm开发·嵌入式硬件·fpga开发·开源·c#
振南的单片机世界3 天前
SysTick硬核拆解:既是HAL_Delay的“心跳”,也是RTOS的“节拍器”
arm开发·stm32·单片机·嵌入式硬件
北京盛世宏博3 天前
以太网温湿度传感器星型组网三种供电布线技术对比文档
arm开发·以太网·原理·传感器·温湿度·原来
zlinear数据采集卡3 天前
D223 ADC数据处理流水线:从原始采样值到工程单位的完整转换链
开发语言·arm开发·嵌入式硬件·fpga开发·开源·c#