我对汇编(x86_64)非常陌生,并且遇到了一个教程,该教程提供了一个简单的程序来打印具有未定义长度的字符串。程序如下:
section .data
text db "Hello, World!",10,0
section .text
global _start
_start:
mov rax, text
call _print
mov rax, 60
mov rdi, 0
syscall
_print:
push rax
mov rbx, 0
_printLoop:
inc rax
inc rbx
mov cl, [rax]
cmp cl, 0
jne _printLoop
mov rax, 1
mov rdi, 1
pop rsi
mov rdx, rbx
syscall
ret
Run Code Online (Sandbox Code Playgroud)
我理解它的逻辑,除了一件事,_printLoop子例程在根本没有被调用的情况下是如何执行的?是不是因为_print没有ret声明而失败?标签不就是封装吗?预先感谢您的任何解释!