I am trying to understand assembly code. I am stuck in the portion where the pointer is assigned and the code after leaq command
This is my C code:
#include <stdio.h> #include<stdlib.h> int main(){ int x=50; int *y=&x; return 0; } This is my corresponding ASSEMBLY code:
.file "AssemlyCode.c" .def __main; .scl 2; .type 32; .endef .text .globl main .def main; .scl 2; .type 32; .endef .seh_proc main main: pushq %rbp .seh_pushreg %rbp movq %rsp, %rbp .seh_setframe %rbp, 0 subq $48, %rsp .seh_stackalloc 48 .seh_endprologue call __main movl $50, -12(%rbp) leaq -12(%rbp), %rax movq %rax, -8(%rbp) movl $0, %eax addq $48, %rsp popq %rbp ret .seh_endproc .ident "GCC: (GNU) 5.4.0"
int y=&x;is invalid.yis not a pointer.seh_and other directives that set metadata for the object file.