#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 源 目標

6502

外部連結

登录