簡體   English   中英

如何使用匯編語言在linux中使用

[英]How to use use as in linux with assembly language

我正在研究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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM