linux - 如何使用 use as in linux 和汇编语言

标签 linux assembly kernel

我正在研究Linux内核,所以我必须阅读一些汇编代码。这是一个示例代码


SYSWRITE=4
.globl mywrite,myadd
.text
mywrite:
    pushl %ebp
    movl %esp,%ebp
    pushl %ebx
    movl 8(%ebp),%ebx
    movl 12(%ebp),%ecx
    movl 16(%ebp),%edx
    movl $SYSWRITE,%eax
    int $0x80
    popl %ebx
    movl %ebp,%esp
    popl %ebp
    ret

myadd:
    pushl %ebp
    movl %esp,%ebp
    movl 8(%ebp),%eax
    movl 12(%ebp),%edx
    xorl %ecx,%ecx
    addl %eax,%edx
    jo 1f
    movl 16(%ebp),%eax
    movl %edx,(%eax)
    incl %ecx
1:  
    movl %ecx,%eax
    movl %ebp,%esp
    popl %ebp
    ret

我是这样使用as的
“as -o callee.o callee.s”

编译它,但它失败了,并显示一条类似这样的消息
“callee.s|5| 错误:‘push’的后缀或操作数无效”

最佳答案

您可能使用的是 64 位机器,因此您的 as 默认为 64 位。因为你有 32 位代码,你想使用:

as -32 -o callee.o callee.s

关于linux - 如何使用 use as in linux 和汇编语言,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16391536/

相关文章:

java - 是否可以将 exe 文件转换为 jar 文件?

linux - 迁移到更大的实例后,AWS ubuntu 上的设备上没有剩余空间

assembly - RISC 32I 跳转和分支 LSB 硬连线至零

linux - 访问wait_event_timeout Linux接口(interface)中的共享变量

linux - 在 LINUX 中终止本地 TCP 连接

c - 在 Linux 中安装一个新库,并从我的 C 代码访问它

assembly - 如何汇编RISC-V指令集的RVC(压缩指令)扩展?

linux - 汇编函数整型局部变量

尝试在 freebsd 中编译系统调用 .c 文件时出现冲突错误

crash - 如何了解gdb的反汇编代码输出