小编pat*_*afa的帖子

子程序如何在不被调用的情况下执行?

我对汇编(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声明而失败?标签不就是封装吗?预先感谢您的任何解释!

assembly nasm subroutine

2
推荐指数
1
解决办法
560
查看次数

标签 统计

assembly ×1

nasm ×1

subroutine ×1