在asm中,printf()如何知道传入了多少变量?

dai*_*isy 0 c compiler-construction assembly printf

在汇编语言的世界中,当你打电话时printf(),你会:

push arg_N
push arg_N-1
..
push arg1
push format
call _printf
Run Code Online (Sandbox Code Playgroud)

但是,如何printf()知道传递了多少参数?

bma*_*ies 7

它只是沿着字符串走,在找到%-format项时消耗参数.如果参数少于%-items,那么就会发生一些可怕的事情.