- 博客(4)
- 收藏
- 关注
原创 i.mx6ull清除BSS段
通过循环遍历 BSS 段的每个内存位置,并将其内容设置为 0,这段代码实现了清除 BSS 段的功能。这样,在程序开始执行之前,BSS 段中的全局变量和静态变量将被自动初始化为 0 或默认值。首先,这段代码定义了两个全局符号 _bss_start 和 _bss_end,它们用于标记BSS段的起始地址和结束地址。这些符号是全局可见的,可以在程序的其他部分使用。在汇编语言中,BSS段是存放未初始化全局变量和静态变量的一块内存区域。这些变量在程序开始执行之前会被初始化为零或者默认值。
2023-06-27 20:13:35
140
原创 宏展开是指在编译过程中将宏名称替换为其对应的定义内容。如果没有使用括号,宏展开时可能会导致意外的结果。
通过使用括号,宏展开后的代码将是。,从而得到预期的结果。在main函数中,我。
2023-06-27 18:03:54
208
原创 字节对齐过程中加上& ~(alignment - 1)操作的作用
假设我们有一个要对齐的数据类型是int,而对齐值(alignment)为4。操作,我们将偏移量的低位按照对齐值的要求进行了舍入。操作在字节对齐计算中的作用是保证了对齐偏移量被正确地舍入到对齐值的倍数,确保了最终的指针对齐结果是有效的。假设初始时,指针p的地址为12,而我们希望将p对齐到4字节边界上。在这个结果中,p的值变为19,这是一个无效的地址,因为它不是4的倍数。将偏移量与按位取反的对齐值进行按位与运算,得到0b0100,即4。最终的结果是p的值变为16,这是一个有效的4字节对齐的地址。
2023-06-21 11:47:51
278
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人