#PURPOSE: Simple program that exits and returns a # status code back to the Linux kernel # #INPUT: none # #OUTPUT: returns a status code. This can be viewed # by typing # # echo $? # # after running the program # #VARIABLES: # %eax holds the system call number # %ebx holds the return status # .section .data .section .text .globl _start _start: movl $1, %eax # this is the linux kernel command # number (system call) for exiting # a program movl $4, %ebx # this is the status number we will # return to the operating system. # Change this around and it will # return different things to # echo $? int $0x80 # this wakes up the kernel to run # the exit command
$ as test.s -o test.o $ ld test.o -o test $ ./test $ echo $?
GCC Inline Assembly
asm ("" : 輸出暫存器 // "=r" : 輸入暫存器 // "r" : 會被修改到的暫存器 (clobber));
asm ("nop"); __asm__("movl $1, %eax\n\t" "movl $4, %ebx\n\t" "int $0x80");
x86
Intel (NASM):
mov eax, 4 ; mov 目標 源
AT&T (GAS):
mov $4, %eax; mov 源 目標