是否可以链接16位代码和32位代码?

时间:2014-04-10 09:19:31

标签: linux assembly linker makefile 16-bit

我问了一个相关的问题here。现在我有更基本的问题,我的意思是我原来的问题已经改变,所以我决定问一个新问题。我在链接器脚本和makefile方面没有太多经验。从linux中读取以下四个文件setup.ldMakefilebioscall.Spmjump.S,我认为可行(正常)是否合适?

bioscall.S中:

.code16
.section ".inittext","ax"

pmjump.S中:

.code32
.section ".text32","ax"

setup.ld中:

.inittext       : { *(.inittext) }

.text32         : { *(.text32) }

2 个答案:

答案 0 :(得分:1)

ELF格式没有16位变体,因此您的16位代码将被放入32位部分。是的,这些可以与“真正的”32位代码链接在一起。结果是否有效是一个不同的问题。

答案 1 :(得分:0)

如果使用ARM处理器,16位代码为“拇指”模式,16位指令,32位寄存器,32位代码为“arm”模式,32位指令和32位寄存器,则可以实现。 ARM工具集也使用ELF。