c中的指针转换为汇编

时间:2016-02-18 01:39:02

标签: pointers assembly

下面的代码,据我所知,它表示将指针存储在%rsi%eax如果这是正确的,那么第二行就是将%eax中的指针添加到%rdi中的指针}?

很困惑。我知道汇编没有指针我只是将汇编转换为c。我必须将汇编代码写入c代码,这两行都会让我感到害怕。我能澄清一下吗?

movl    (%rsi), %eax
addl    %eax, (%rdi)

1 个答案:

答案 0 :(得分:0)

由于您似乎正在使用AT& T语法,因此括号将取消引用%rsi中的值。这些表达式的C等价物是:

/* Expression 1 */
unsigned int* p = some_address;
unsigned int i = *p; /* *p dereferences the address in p */


/* Expression 2 */
unsigned int* p = some_address;
unsigned int i = 8;
i += *p /* Increase i by the value pointed to by p */