[RFC]confusion about syscall

王哲 wangzhe5004 at gmail.com
Sat Jul 14 22:28:45 EDT 2012


Hi all:

 i write two simple program to invoke syscall getpid.

the first  program (getpid1.c) is as followed:
#include <stdio.h>
#include <unistd.h>

int main(void)
{
    unsigned long value = 0;
    __asm__("int $0x80":"=a"(value):"0"(20));
    return 0;
}

and use objdump -d a.out disassembling it :
...
 80483c2:    b8 14 00 00 00       mov    $0x14,%eax
 80483c7:    89 c3                    mov    %eax,%ebx
 80483c9:    89 d8                    mov    %ebx,%eax
 80483cb:    cd 80                    int    $0x80
...


and the second program:

#include <stdio.h>
#include <unistd.h>

int main(void)
{
    unsigned long value = 0;
    value = getpid();
    return 0;
}

and disassembling it:( objdump -d a.out)
...
08048300 <getpid at plt>:
 8048300:    ff 25 00 a0 04 08        jmp    *0x804a000
 8048306:    68 00 00 00 00           push   $0x0
 804830b:    e9 e0 ff ff ff           jmp    80482f0 <_init+0x3c>
...
080483e4 <main>:
 80483e4:    55                                      push   %ebp
 80483e5:    89 e5                                  mov    %esp,%ebp
 80483e7:    83 e4 f0                              and    $0xfffffff0,%esp
 80483ea:    83 ec 10                             sub    $0x10,%esp
 80483ed:    c7 44 24 0c 00 00 00           movl   $0x0,0xc(%esp)
 80483f4:    00
 80483f5:    e8 06 ff ff ff                         call   8048300
<getpid at plt>
 80483fa:    89 44 24 0c                         mov    %eax,0xc(%esp)
 80483fe:    b8 00 00 00 00                    mov    $0x0,%eax
...

question:
      why i can't find the "movl $0x14,%eax"  "int 0x80" in the second
program after disassembling?

any advice will be help!
thanks in advance!
wanny
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.kernelnewbies.org/pipermail/kernelnewbies/attachments/20120715/d249e4c1/attachment.html 


More information about the Kernelnewbies mailing list