在汇编中编写一个 __attribute((constructor)) 函数——可以吗?
Writing an __attribute((constructor)) function in assembly - can it be done?
我一直在用汇编编写 Forth,现在想为用户提供加载模块的选项,而不是将整个事情作为一个整体代码块。
似乎有几种选择,但我正在考虑将模块作为共享库,因此它们需要初始化代码来将它们的 Forth 单词插入字典。
我正在使用 GNU 工具 - 但如何在汇编中编写 __attributes((constructor))
函数?据我了解,这个构造(即__attributes((constructor))
)不是函数的名称,而是赋予函数在初始化时被调用的属性的东西(例如https://gcc.gnu.org/onlinedocs/gcc-4.7.0/gcc/Function-Attributes.html)。
但我找不到任何资源来说明函数本身是什么 called/how 它被命名,更不用说如何在汇编中使用此构造:它是否可以完成?
您需要创建一个 SHT_INIT_ARRAY
部分,其中包含指向 运行 的函数指针数组。 (我假设这是针对当前的 ELF 目标。)这在 ELF 规范中有描述:
作为起点,您可以检查 gcc -S
输出。
我一直在用汇编编写 Forth,现在想为用户提供加载模块的选项,而不是将整个事情作为一个整体代码块。
似乎有几种选择,但我正在考虑将模块作为共享库,因此它们需要初始化代码来将它们的 Forth 单词插入字典。
我正在使用 GNU 工具 - 但如何在汇编中编写 __attributes((constructor))
函数?据我了解,这个构造(即__attributes((constructor))
)不是函数的名称,而是赋予函数在初始化时被调用的属性的东西(例如https://gcc.gnu.org/onlinedocs/gcc-4.7.0/gcc/Function-Attributes.html)。
但我找不到任何资源来说明函数本身是什么 called/how 它被命名,更不用说如何在汇编中使用此构造:它是否可以完成?
您需要创建一个 SHT_INIT_ARRAY
部分,其中包含指向 运行 的函数指针数组。 (我假设这是针对当前的 ELF 目标。)这在 ELF 规范中有描述:
作为起点,您可以检查 gcc -S
输出。