我想知道如何「bootstacktop」和「bootstack」的值由彙編程序,計算出當代碼設置值%ESP:理解彙編代碼
# Set the stack pointer
movl $(bootstacktop),%esp
在同一組件文件的末尾,是的「bootstacktop」「定義」中給出:
###################################################################
# boot stack
###################################################################
.p2align PGSHIFT # force page alignment
.globl bootstack
bootstack:
.space KSTKSIZE
.globl bootstacktop
bootstacktop:
我找到的值,看着deassebly,爲「bootstacktop」,這裏的部分上述'mov'指令的反彙編:
# Set the stack pointer
movl $(bootstacktop),%esp
f0100034: bc 00 40 11 f0 mov $0xf0114000,%esp
KSTKSIZE的值是8 * 4096,PGSHIFT是12.'bootsacktop'的值如何變爲'0xf0114000'? 'bootstack'的價值是什麼?
這裏是鏈接描述:http://pastebin.com/9DPakfgx
我已經完成了項目文件的全部搜索,但沒有bootstacktop的定義。它是由...生成的。空間指令,我想,但我不能弄明白,如果是的話。 – Sush
我已添加鏈接器腳本 – Sush
哦,您正在使用JOS(注意到您的鏈接器文件中)。將包含那些定義的東西。可能是'inc/memlayout.h' –