最近,我尝试在Linux平台上自己编写一个简单的编译器。
当涉及到编译器的后端时,我决定生成ELF格式的二进制文件,而不使用第三方库,比如libelf
。
相反,我想尝试直接使用write()
函数将机器代码直接写入对应的ELF ABI文件中,并控制ELF文件的所有细节。
这种方法的优点是我可以控制我的编译器的一切。
但我还在犹豫。考虑到ELF ABI的详细程度,这种方式可行吗?
我希望得到任何建议和指向好的可用资源的指针。
最近,我尝试在Linux平台上自己编写一个简单的编译器。
当涉及到编译器的后端时,我决定生成ELF格式的二进制文件,而不使用第三方库,比如libelf
。
相反,我想尝试直接使用write()
函数将机器代码直接写入对应的ELF ABI文件中,并控制ELF文件的所有细节。
这种方法的优点是我可以控制我的编译器的一切。
但我还在犹豫。考虑到ELF ABI的详细程度,这种方式可行吗?
我希望得到任何建议和指向好的可用资源的指针。
PT_LOAD
程序头:一个用于加载程序的代码段,另一个用于加载其数据段。理论上它们可以合并,但安全加固的内核不允许给定页面既可写又可执行,因此最好将它们分开。
一些建议阅读: