未知变量被移入EAX寄存器

时间:2015-05-08 03:32:05

标签: assembly x86 x86-64

对于以下功能:

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); 

}

Say hello function

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

1 个答案:

答案 0 :(得分:1)

你向后看了。此汇编语言代码采用Intel语法,类似于instruction destination, source

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