我目前正在尝试在我的Trisquel发行版上学习汇编(我猜它在幕后使用Ubuntu?)。由于某些原因,我被困在创建和执行程序集片段的第一步。
.section data
.section text
.globl _start
_start:
movl $1, %eax # syscall for exiting a program
movl $0, %ebx # status code to be returned
int $0x80当我尝试汇编和链接它以创建可执行文件并运行该可执行文件时,我得到的结果如下所示:
> as myexit.s -o myexit.o && ld myexit.o -o myexit
> ./myexit
bash: ./myexit: cannot execute binary file我不知道这到底是怎么回事。在搜索之后,似乎这个错误通常会在64位操作系统上执行32位可执行文件时弹出,或者反之亦然,但我的情况并非如此。
下面是file和uname命令的输出:
$ file myexit
myexit: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), statically linked, not stripped
$ uname -a
Linux user 2.6.35-28-generic #50trisquel2-Ubuntu SMP Tue May 3 00:54:52 UTC 2011 i686 GNU/Linux有人能帮我理解这里到底出了什么问题吗?谢谢。
发布于 2012-01-09 03:32:56
.section text是不正确的,当您需要将代码放在.text节中时,它会创建一个名为text的节。将其替换为:
.data
.text
.globl _start
_start:
...https://stackoverflow.com/questions/8780418
复制相似问题