我正试图从中学习如何编写链接器脚本
this tutorial
直到我来到一个叫
Assigning values to symbols
,他们给出了这个例子:
floating_point = 0;
SECTIONS
{
.text :
{
*(.text)
_etext = .;
}
_bdata = (. + 3) & ~ 4;
.data : { *(.data) }
}
此外,他们还添加了解释:
在前面的示例中
floating_point
将定义符号
为零。这个
_etext
符号将被定义为地址
在最后一个之后
.text
输入部分。符号
_bdata
将
定义为以下地址
文本
输出部分
向上对齐到4字节边界。
我的问题在于他们所说的那句话:
符号
_bdata
将
定义为以下地址
文本
输出部分
向上对齐到4字节边界。
例如,我真的不明白,假设后面的地址
文本
是
1327
以十进制表示,所以
.=1327
所以
.+3
将相当于
1331
以十进制表示,二进制等于
0101 0011 0011
和
~ 4
计算为
1111 1111 1011
以二进制形式
所以
(.+3) & ~4
将:
0101 0011 0011
&
1111 1111 1011
--------------
1111 0011 0011
所以
1111 0011 0011
是
1331
以十进制和
1331/4 = 332.75
所以它向上对齐到4字节的边界。
我遗漏了什么吗?或者我误解了解释吗?