求问leal指令的一个问题
我看到gcc产生了下面这种代码,leal -4(%ebp), %eax
这个是不是把ebp里面存储的地址减去4了之后放在eax里,因为它是要调用scanf,所以需要传递地址?
但是如果确实是取地址的话有时候又说不通,比如:
1. leal 0x0(,%ebx,4), %edx (假设ebx里面存的是x)
那么根据代码,它的效果是edx里的值是4*x,这和取地址好像很不一样啊。
2. leal -1(%ebx), %eax (ebx放的是n,根据它的注释,这句话是计算n-1,并放在eax中)
请问大神,这个leal到底是个什么意思呢?