往往是最常用的 debug 工具之一
但在組語的世界裡
在還不會呼叫 C 語言函式庫前
你是無法跟螢幕打交道的
幸好我們還是可以透過 system call 來做這件事
用的是 write system call
差別在 file descriptor 是 STDOUT ($1)
底下是個包裝好的函式
接收 1 個參數,指向 C語言字串 (null-terminated string) 的 address 位址
參數傳遞方式是使用 stack
.type myprint,@function
myprint:
pushl %ebp
movl %esp, %ebp
# get msg address
movl 8(%ebp), %ecx
# get msg length
movl $0, %edx
start_loop:
cmpb $0, (%ecx)
je end_loop
incl %ecx
incl %edx
jmp start_loop
end_loop:
movl $4, %eax
movl $1, %ebx
movl 8(%ebp), %ecx
int $0x80
movl %ebp, %esp
popl %ebp
ret
沒有留言:
張貼留言