.section .data
msg: .ascii "start fork/n"
msg_len = . - msg
father_msg: .ascii "this is father/n"
father_msg_len = . - father_msg
child_msg: .ascii "this is child/n"
child_msg_len = . - child_msg
.equ write_number, 4
.equ stdout_number, 1
.equ fork_number, 2
.equ exit_number, 1
.section .text
.globl _start
_start:
#print msg
movl $write_number,%eax
movl $stdout_number, %ebx
movl $msg, %ecx
movl $msg_len, %edx
int $0x80
#invoke fork
movl $fork_number, %eax
int $0x80
#return value in eax
movl %eax, %ecx
jecxz child
father:
#print father_msg
movl $write_number, %eax
movl $stdout_number, %ebx
movl $father_msg, %ecx
movl $father_msg_len, %edx
int $0x80
jmp exit
child:
#print child_msg
movl $write_number, %eax
movl $stdout_number, %ebx
movl $child_msg, %ecx
movl $child_msg_len, %edx
int $0x80
jmp exit
exit:
movl $exit_number,%eax
movl $0, %ebx
int $0x80
msg: .ascii "start fork/n"
msg_len = . - msg
father_msg: .ascii "this is father/n"
father_msg_len = . - father_msg
child_msg: .ascii "this is child/n"
child_msg_len = . - child_msg
.equ write_number, 4
.equ stdout_number, 1
.equ fork_number, 2
.equ exit_number, 1
.section .text
.globl _start
_start:
#print msg
movl $write_number,%eax
movl $stdout_number, %ebx
movl $msg, %ecx
movl $msg_len, %edx
int $0x80
#invoke fork
movl $fork_number, %eax
int $0x80
#return value in eax
movl %eax, %ecx
jecxz child
father:
#print father_msg
movl $write_number, %eax
movl $stdout_number, %ebx
movl $father_msg, %ecx
movl $father_msg_len, %edx
int $0x80
jmp exit
child:
#print child_msg
movl $write_number, %eax
movl $stdout_number, %ebx
movl $child_msg, %ecx
movl $child_msg_len, %edx
int $0x80
jmp exit
exit:
movl $exit_number,%eax
movl $0, %ebx
int $0x80