Я очень новичок в сборке (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
Я понял логику этого, кроме одного: как выполняется подпрограмма _printLoop
, когда она вообще не вызывается? Это как ... провалиться, потому что _print
не имеет ret
заявления? Разве ярлыки не инкапсулируются? Заранее спасибо за любые объяснения!