C 语言数据组织与类型定义全解析
1. 非对齐数据读取
非对齐数据读取需要四条指令,而对齐读取只需一条指令。程序需使用两条加载指令获取数字的两部分,一次移位操作将上半部分移到寄存器顶部,再用逻辑或操作合并两部分。每次加载或存储非对齐的 uint32_t 时都需使用类似代码,这也是编译器添加填充以避免此操作的原因。
示例代码如下:
ldrh r3, [r3, #4] ; Get uint16_t at offset 4 (0x1122).
; (High bytes come after low.)
lsls r3, r3, #16 ; r3 contains the top 1/2 of squareFeet
; in the bottom 16 bits of r3.
; Shift it left into the top half.
orrs r3, r2 ; Combine the two halves.
2. 结构体初始化
- 传统初始化 :可以通过将初始化列表放在花括号
{}内来初始化结构体。例如:
struct house {
uint8_t stories; // Nu
超级会员免费看
订阅专栏 解锁全文

被折叠的 条评论
为什么被折叠?



