qemu

FORK: QEMU emulator
git clone https://git.neptards.moe/neptards/qemu.git
Log | Files | Refs | Submodules | LICENSE

hello-i386.c (699B)


      1 #include <asm/unistd.h>
      2 
      3 static inline void exit(int status)
      4 {
      5   int __res;
      6   __asm__ volatile ("movl %%ecx,%%ebx\n"\
      7                     "int $0x80" \
      8                     :  "=a" (__res) : "0" (__NR_exit),"c" ((long)(status)));
      9 }
     10 
     11 static inline int write(int fd, const char * buf, int len)
     12 {
     13   int status;
     14   __asm__ volatile ("pushl %%ebx\n"\
     15                     "movl %%esi,%%ebx\n"\
     16                     "int $0x80\n" \
     17                     "popl %%ebx\n"\
     18                     : "=a" (status) \
     19                     : "0" (__NR_write),"S" ((long)(fd)),"c" ((long)(buf)),"d" ((long)(len)));
     20   return status;
     21 }
     22 
     23 void _start(void);
     24 void _start(void)
     25 {
     26     write(1, "Hello World\n", 12);
     27     exit(0);
     28 }