我想知道如何“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' –