【发布时间】:2015-05-04 07:22:11
【问题描述】:
我目前正在尝试将 GCC 工具链用于 RISC-V,但遇到了一些问题。
看起来堆栈指针没有正确初始化。我知道我应该自己初始化它,但我不知道在哪里。我正在使用使用正确内存地址更改的默认链接描述文件,并且在此脚本中设置了一个常量 _gp。该常量在默认启动代码中用于初始化 gp 寄存器。
不幸的是,这并没有设置 sp 寄存器。如何在不使用自己的启动代码的情况下设置堆栈指针?
【问题讨论】:
标签: riscv
我目前正在尝试将 GCC 工具链用于 RISC-V,但遇到了一些问题。
看起来堆栈指针没有正确初始化。我知道我应该自己初始化它,但我不知道在哪里。我正在使用使用正确内存地址更改的默认链接描述文件,并且在此脚本中设置了一个常量 _gp。该常量在默认启动代码中用于初始化 gp 寄存器。
不幸的是,这并没有设置 sp 寄存器。如何在不使用自己的启动代码的情况下设置堆栈指针?
【问题讨论】:
标签: riscv
这是在github:
上回答的执行环境(例如操作系统内核)在跳转到程序的入口点之前应该已经初始化了 sp。如果您处于具有不同约束的嵌入式域中,则需要使用不同的 crt0 来设置这种东西。 gp 是指向小数据部分的 ABI 全局指针。操作系统不会初始化它,因为它是二进制文件的属性,而不是执行环境(与堆栈不同)
【讨论】: