我正在从头开始编写最小的操作系统。我启用了分页和长模式,但是当我要设置堆栈时,我有几个问题。
使用PUSH,POP指令时,堆栈指针是否包含MMU自动转换为物理地址的虚拟地址?
ELF文件中是否提到了堆栈的位置?
启用分页后,堆栈指针必须是虚拟地址。
标准的x86-64 psABI没有为堆栈指针指定初始值,因此它不会显示在ELF文件中。默认情况下,最常见的程序加载器(Linux)将堆栈地址随机化。