符号 Table 中的值是什么?
What is Value in Symbol Table?
在下面的问题中,我被要求填写符号 table,我理解并同意所有内容,除了...
那个 Value 字段是什么,它是什么意思,为什么在这个例子中它总是 0,有人可以显示它不是 0 的情况吗?
Value
是相对于它们在其中定义的部分 (Ndx
),所以我认为它是一个偏移量(部分相对)。
这些符号的值为 0 的原因是因为它们都是它们所在部分中的第一个符号!!这些都是非常小的例子,这只是巧合和人工产物。
- 在a.asm中,
spam
是数据段的第一个,所以偏移0.
- 在a.asm中,
bar
是正文部分的第一个,所以偏移0。
- 在b.asm中,
spam
又是数据段的第一个,所以偏移0.
- 在b.asm中,
_start
是正文部分的第一个,所以偏移0。
- 在b.asm中,
bar
是未定义的,因此在节中标出。 Value
对于未定义的或外部的东西没有意义。
这些符号被定义为全局的,这意味着链接器可以看到它们并将导入绑定到导出。但是,a.o 和 b.o 似乎并不打算一起工作,因为它们各自定义了符号 spam
,如果将它们一起链接到程序中,这将导致链接错误.
此示例没有导入(但确实有一个未定义的条目,bar
in b.o,但请注意 bar
不是 .global 或以其他方式标记为导入)。
(搬迁是另一回事,但这个问题没有显示或询问他们。)
如果您有两个(或更多)符号,它们之间至少有一个或多个字节(在任何一个部分、数据或文本中),那么第一个之后的所有符号都将具有非零 Value
.
在下面的问题中,我被要求填写符号 table,我理解并同意所有内容,除了...
那个 Value 字段是什么,它是什么意思,为什么在这个例子中它总是 0,有人可以显示它不是 0 的情况吗?
Value
是相对于它们在其中定义的部分 (Ndx
),所以我认为它是一个偏移量(部分相对)。
这些符号的值为 0 的原因是因为它们都是它们所在部分中的第一个符号!!这些都是非常小的例子,这只是巧合和人工产物。
- 在a.asm中,
spam
是数据段的第一个,所以偏移0. - 在a.asm中,
bar
是正文部分的第一个,所以偏移0。 - 在b.asm中,
spam
又是数据段的第一个,所以偏移0. - 在b.asm中,
_start
是正文部分的第一个,所以偏移0。 - 在b.asm中,
bar
是未定义的,因此在节中标出。Value
对于未定义的或外部的东西没有意义。
这些符号被定义为全局的,这意味着链接器可以看到它们并将导入绑定到导出。但是,a.o 和 b.o 似乎并不打算一起工作,因为它们各自定义了符号 spam
,如果将它们一起链接到程序中,这将导致链接错误.
此示例没有导入(但确实有一个未定义的条目,bar
in b.o,但请注意 bar
不是 .global 或以其他方式标记为导入)。
(搬迁是另一回事,但这个问题没有显示或询问他们。)
如果您有两个(或更多)符号,它们之间至少有一个或多个字节(在任何一个部分、数据或文本中),那么第一个之后的所有符号都将具有非零 Value
.