Я читаю этот вопрос об атрибуте noreturn
, который используется для функций, которые не возвращаются вызывающему.
Затем я сделал программу в C.
#include <stdio.h>
#include <stdnoreturn.h>
noreturn void func()
{
printf("noreturn func\n");
}
int main()
{
func();
}
И сгенерированная сборка кода с помощью this:
.LC0:
.string "func"
func:
pushq %rbp
movq %rsp, %rbp
movl $.LC0, %edi
call puts
nop
popq %rbp
ret // ==> Here function return value.
main:
pushq %rbp
movq %rsp, %rbp
movl $0, %eax
call func
Почему функция func()
возвращается после предоставления атрибута noreturn
?