i studying linux kernel, have read assembly code. here sample code
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
i use in way
"as -o callee.o callee.s"
to compile it,but fails message saying
"callee.s|5| error: suffix or operands invalid `push'"
you're on 64-bit machine, as
defaults 64-bit. since have 32-bit code, want use:
as -32 -o callee.o callee.s
Comments
Post a Comment