如果ELF可执行文件中没有.data部分,GP寄存器设置为多少?

问题描述 投票:0回答:1

我正在制作一个 RISC-V 64 位模拟器,并为其添加 ELF 文件支持。我在某处读到,您应该分配一个堆栈并在 SP 寄存器中设置指向它的指针,同时将 GP 寄存器设置为分配

.data
部分的位置。然而,当运行一些测试 C++ 文件时,我发现有时
g++
在输出 ELF 文件中不包含
.data
部分,同时还尝试访问 GP 寄存器进行读/写。我尝试查看 RISCV ABI 和链接器文档以及可以设置的任何默认值,但我什么也没找到。应该设置成什么?

assembly emulation elf cpu-registers riscv
1个回答
1
投票

GP 寄存器通常设置在从

.sdata
开始的 4K 窗口的中间,因此链接器可以relax 访问该窗口内的全局符号。请参阅这篇si Five帖子Liviu Ionescu的文章

© www.soinside.com 2019 - 2024. All rights reserved.