我只是想到了这一点,而不是将我的新问题(“为什么?”)分解成另一个问题,我认为最好的解决方案是将问题和解释保存在同一页面上。基本程序集“非法指令” - 甚至没有hello world - 为什么需要链接?
我正在编写一个基本的汇编程序来立即启动并立即退出使用内核中断int 0x80
。我当前的代码很简单如下:
/* Simple exit via kern-interrupt */
.globl start
start:
pushl $0x0
movl $0x1, %eax
subl $4, %esp
int $0x80
组装
as -arch i386 <file>.s
一旦执行,我收到了一个行错误:
Illegal instruction
它的bizzare,连评论都出来仍产生尽管没有说明,但在Illegal instruction
。我错过了linking
步骤,尽管没有其他文件要链接到? 是的,我是
编辑:允许我重新说明我的问题,为什么你需要链接时,没有库或任何链接?
如果它只是一个目标文件,它有什么不同? – Hawken 2012-03-22 03:21:49
@Hawken,您不能运行或链接源文件或编译数据库索引时运行一个目标文件:-)目标文件的格式已准备好链接到可执行文件,但本身不是自身的可执行文件。 – paxdiablo 2012-03-22 03:26:01
那么链接器添加的神秘代码是什么?我看到'hexdump'中的文件大小几乎翻了一番。前十二个字节是相同的。 – Hawken 2012-03-22 03:31:46