相关疑难解决方法(0)

LEA指令的目的是什么?

对我来说,它看起来像一个时髦的MOV.它的目的是什么,我什么时候应该使用它?

x86 assembly x86-64 x86-16

632
推荐指数
15
解决办法
54万
查看次数

LEAL汇编指令有什么作用?

我对它们之间的区别有点困惑

leal -4(%ebp), %eax       
Run Code Online (Sandbox Code Playgroud)

movl -4(%ebp), %eax
Run Code Online (Sandbox Code Playgroud)

谁可以给我解释一下这个?

c x86 assembly

19
推荐指数
2
解决办法
4万
查看次数

在不是地址/指针的值上使用LEA?

我试图了解地址计算指令的工作原理,尤其是leaq命令.然后当我看到leaq用于进行算术运算的例子时,我感到困惑.例如,以下C代码,

long m12(long x) {
return x*12;
}
Run Code Online (Sandbox Code Playgroud)

在组装中

leaq (%rdi, %rdi, 2), %rax
salq $2, $rax
Run Code Online (Sandbox Code Playgroud)

如果我的理解是正确的,那么leaq应该移动任何(%rdi, %rdi, 2)应该2*%rdi+%rdi评估的地址%rax.我感到困惑的是,因为值x存储%rdi在内,这只是内存地址,为什么%rdi乘以3然后左移这个内存地址 2等于x乘以12?是不是当我们%rdi用3时,我们跳到另一个没有值x的内存地址?

c x86 assembly memory-address

4
推荐指数
2
解决办法
4927
查看次数

使用leal的线路是什么?

我给了一些C代码和它的汇编对应物,我将用它来计算声明的两个常量的值#define.我的问题是这条线是什么

leal 0(,%eax,8),%edx
Run Code Online (Sandbox Code Playgroud)

做?

x86 assembly

2
推荐指数
1
解决办法
783
查看次数

LEAL 指令,这是什么意思?

所以首先我通过做分配 edx = y movl 12(%ebp) %edx.

为什么leal (%edx, %edx, 2) , %edx =edx = 3*y

assembly addressing-mode

1
推荐指数
1
解决办法
7643
查看次数

x86汇编gcc调用约定esp寄存器

文档说当调用汇编方法时,第一个参数应该是4(%esp).若第二个论点是这样的话8(%esp)

我真的没有得到&t汇编语法的gnus所以这下面的代码在intel语法中是什么?

4(%esp)
Run Code Online (Sandbox Code Playgroud)

是它[esp + 4]还是[esp * 4]例如?

x86 assembly att

-1
推荐指数
1
解决办法
151
查看次数

标签 统计

assembly ×6

x86 ×5

c ×2

addressing-mode ×1

att ×1

memory-address ×1

x86-16 ×1

x86-64 ×1