未知变量被移入 EAX 寄存器

Unknown variable being moved into EAX register

对于以下函数:

void say_hello (void) { 

    char name[5]; 
    gets(name); //this is a unsafe function to use. Results in stack overflow
    printf("Hello %s\n", name); 

}

我知道 rbp+var_5gets() 函数的参数,rbp+var_10printf 函数的参数。但是 rbp+var_14 是什么?为什么要将其移入 EAX 寄存器?

你倒着读。此汇编语言代码采用 Intel 语法,类似于 instruction destination, source.

mov dword [ss:rbp:var+14], eax 将包含调用 printf() 的 return 值的 eax 复制到堆栈上的临时变量中。然后变量被丢弃(之后没有代码从中读取)。