我从来没有在我的旧 linux 机器上遇到过这个错误(都是 intel 32bit),所以我很茫然。
我正在尝试汇编和链接汇编代码(这非常简单并且应该可以工作)但是ld
给出了错误
rs.o: In function `_start':
(.text+0x11): undefined reference to `eax'
有问题的线就是pushl %eax
线。我只需要将 0 的单个字节推入堆栈,因此我决定使用 xor'deax
寄存器。但是在使用代码进行汇编时pushb
给了我一个“无效的后缀或操作数用于推送”错误,如果我尝试使用汇编很好但链接器对我大喊大叫。as
pushb %al
pushl %eax
as
这是代码。
.section .data
.section .text
.global _start
_start:
xorl %eax, %eax
#sys_socketcall(int call, __user *args)
#sys_socket(int domain, int type, int protocol)
pushl %eax #protocol: 0
pushl $1 #type: SOCK_STREAM
pushl $2 #domain: AF_INET
movL $1, %ebx #sys_socket
movl $102, %eax #sys_socketcall
int $0x80
movl $eax, %ebx #move socket fd to check echo $?
movl $1, %eax #exit
int $0x80
任何帮助表示赞赏。