往往是最常用的 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
沒有留言:
張貼留言