在下面的問題中,我被要求填寫符號表,我理解并同意所有內容,除了......
Value 欄位是什么,它的意思是什么,為什么在這個例子中它總是 0,有人可以展示它不是 0 的情況嗎?

uj5u.com熱心網友回復:
這Value是相對于Ndx它們在其中定義的部分(),所以我認為它是一個偏移量(部分相對)。
這些符號的值為 0 的原因是因為它們都是它們所在部分中的第一個符號!!這些都是非常小的例子,這只是巧合和人工產物。
- 在 a.asm 中,
spam是資料段中的第一個,所以偏移量為 0。 - 在 a.asm 中,
bar是 text 部分的第一個,所以偏移量為 0。 - 在 b.asm 中,
spam又是資料段的第一個,所以偏移量為 0。 - 在 b.asm 中,
_start是 text 部分的第一個,所以偏移量為 0。 - 在 b.asm 中,
bar未定義,因此在節中標記。Value對于未定義的事物或外部事物沒有任何意義。
這些符號被定義為全域的,這意味著聯結器可以看到它們并將匯入系結到匯出。然而,似乎 ao 和 bo 并不打算一起作業,因為它們各自定義了符號spam,如果它們一起鏈接到一個程式中,這將導致鏈接錯誤。
這個例子沒有匯入(但bar在 bo中有一個未定義的條目,但讓我們注意它bar不是 .global 或以其他方式注明為匯入)。
(搬遷是另一回事,但這個問題沒有顯示或詢問它們。)
如果您有兩個(或更多)符號,其中至少有一個或多個位元組(在任何一個部分、資料或文本中),那么除第一個之外的所有符號都將具有非零的Value.
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/313723.html
