I need some help with this problem. I am trying to reverse engineer code from assembly code but I keep being off by 1 command and I am confused to why. The assembly code I am given (with my notes in #) is this.
0x00005555555545fa <+0>: push %rbp
0x00005555555545fb <+1>: mov %rsp,%rbp #int x,y
=> 0x00005555555545fe <+4>: movl $0x2b,-0xc(%rbp) #set x = 43
0x0000555555554605 <+11>: movl $0x2fd,-0x8(%rbp) #set y = 765
0x000055555555460c <+18>: mov -0xc(%rbp),%edx #load x into %edx
0x000055555555460f <+21>: mov -0x8(%rbp),%eax #load y into %eax
0x0000555555554612 <+24>: add %edx,%eax #add x and y
0x0000555555554614 <+26>: mov %eax,-0x4(%rbp) # y = x + y
0x0000555555554617 <+29>: mov $0x0,%eax
0x000055555555461c <+34>: pop %r bp
0x000055555555461d <+35>: retq
Here is my current code and the resulting assembly code
int main(){
int x,y;
x = 43;
y = 765;
x = y;
y = y + x;
}
0x00005555555545fa <+0>: push %rbp
0x00005555555545fb <+1>: mov %rsp,%rbp
=> 0x00005555555545fe <+4>: movl $0x2b,-0x8(%rbp)
0x0000555555554605 <+11>: movl $0x2fd,-0x4(%rbp)
0x000055555555460c <+18>: mov -0x4(%rbp),%eax
0x000055555555460f <+21>: mov %eax,-0x8(%rbp)
0x0000555555554612 <+24>: mov -0x8(%rbp),%eax
0x0000555555554615 <+27>: add %eax,-0x4(%rbp)
0x0000555555554618 <+30>: mov $0x0,%eax
0x000055555555461d <+35>: pop %rbp
0x000055555555461e <+36>: retq
I am having a really hard time figuring out how to 'load x into %edx' and then subsequently adding %eax and %edx. Any help is appriciated c: