Assembly LEA指令-如何转换为C语言?

Assembly LEA指令-如何转换为C语言?,assembly,x86,Assembly,X86,我尝试用C语言转换一些汇编代码。我知道LEA指令将地址存储到指定的寄存器中 例如: LEA EAX, DWORD PTR SS:[EBP - 0x8] 在堆栈地址[EBP-0x8]中,我有值0000000 3d(ollydbg显示它)。 如果我假设eax是一个指针,并将0000000 3D视为61(十进制),那么我将尝试以下操作: int value = 61; int *eax = &value 你同意吗?是还是不是?如果没有,原因是什么?LEA指令计算的地址在本例中是指向局部

我尝试用C语言转换一些汇编代码。我知道LEA指令将地址存储到指定的寄存器中

例如:

LEA EAX, DWORD PTR SS:[EBP - 0x8] 
在堆栈地址[EBP-0x8]中,我有值0000000 3d(ollydbg显示它)。 如果我假设eax是一个指针,并将0000000 3D视为61(十进制),那么我将尝试以下操作:

int value = 61;

int *eax = &value

你同意吗?是还是不是?如果没有,原因是什么?

LEA指令计算的地址在本例中是指向局部变量的指针,因此您所写的内容非常匹配。

LEA指令计算的地址在本例中是指向局部变量的指针,因此,您编写的内容非常匹配。

LEA指令计算的地址在本例中是指向局部变量的指针,因此您编写的内容非常匹配。

LEA指令计算的地址在本例中是指向局部变量的指针,所以你所写的内容非常吻合。

嗨,德韦恩。我不知道(int*)61的语法。你能给我解释一下吗?第二件事是:我在上面写到我在[EBP-0x8]中有61个值。因此,61不是地址。(type)表达式的意思是将表达式“强制转换”到此类型。因此,在这种情况下,它意味着获取值61(它是一个int)并强制将其转换为指针(基本上只是“闭上眼睛”,无论如何都要这样做)。然而,一开始我误解了你的问题。现在我明白你的意思了,你的解决方案是正确的。谢谢你的解释。嗨,德韦恩。我不知道(int*)61的语法。你能给我解释一下吗?第二件事是:我在上面写到我在[EBP-0x8]中有61个值。因此,61不是地址。(type)表达式的意思是将表达式“强制转换”到此类型。因此,在这种情况下,它意味着获取值61(它是一个int)并强制将其转换为指针(基本上只是“闭上眼睛”,无论如何都要这样做)。然而,一开始我误解了你的问题。现在我明白你的意思了,你的解决方案是正确的。谢谢你的解释。嗨,德韦恩。我不知道(int*)61的语法。你能给我解释一下吗?第二件事是:我在上面写到我在[EBP-0x8]中有61个值。因此,61不是地址。(type)表达式的意思是将表达式“强制转换”到此类型。因此,在这种情况下,它意味着获取值61(它是一个int)并强制将其转换为指针(基本上只是“闭上眼睛”,无论如何都要这样做)。然而,一开始我误解了你的问题。现在我明白你的意思了,你的解决方案是正确的。谢谢你的解释。嗨,德韦恩。我不知道(int*)61的语法。你能给我解释一下吗?第二件事是:我在上面写到我在[EBP-0x8]中有61个值。因此,61不是地址。(type)表达式的意思是将表达式“强制转换”到此类型。因此,在这种情况下,它意味着获取值61(它是一个int)并强制将其转换为指针(基本上只是“闭上眼睛”,无论如何都要这样做)。然而,一开始我误解了你的问题。现在我明白你的意思了,你的解决方案是正确的。谢谢你的解释。