设为首页
收藏本站
用户名
Email
自动登录
找回密码
密码
登录
注册
快捷导航
平台
Portal
论坛
BBS
文库
项目
群组
Group
我的博客
Space
搜索
搜索
热搜:
shell
linux
mysql
本版
用户
LinuxSir.cn,穿越时空的Linuxsir!
»
论坛
›
编程开发讨论区 —— LinuxSir.cn
›
Linux 程序设计专题讨论
›
对leal何时加载有效地址,何时进行简单计算实在搞不清楚 ...
返回列表
查看:
1364
|
回复:
4
对leal何时加载有效地址,何时进行简单计算实在搞不清楚,大家帮帮忙!
[复制链接]
Buddhist[CHinA]
Buddhist[CHinA]
当前离线
积分
33
IP卡
狗仔卡
发表于 2005-5-25 13:16:38
|
显示全部楼层
|
阅读模式
从书上看到,leal除了加载有效地址,有时还可以利用它进行简单计算,下面是两个例子
加载有效地址
leal -4(%ebp), %edx load address to %edx
movl (%edx), %eax load value
简单计算,假设%eax存放一个变量x
leal (%eax, %eax, 4), %edx 5*x -> %edx
我不太明白的就是什么时候leal是在加载地址,什么时候是在简单计算?看不出来区别啊!
回复
使用道具
举报
提升卡
置顶卡
沉默卡
喧嚣卡
变色卡
显身卡
Tetris
Tetris
当前离线
积分
264
IP卡
狗仔卡
发表于 2005-5-25 17:06:22
|
显示全部楼层
lea可以进行计算的原因是CPU支持比较复杂的寻址方式。其实,所有lea都可认为是在进行简单计算,比如上面两例子。
回复
支持
反对
使用道具
举报
显身卡
Buddhist[CHinA]
Buddhist[CHinA]
当前离线
积分
33
IP卡
狗仔卡
楼主
|
发表于 2005-5-27 08:55:50
|
显示全部楼层
但
leal -4(%ebp), %edx
这条指令是把ebp-4指向的地址放到edx中,
而
leal (%eax, %eax, 4), %edx
是计算eax寄存器内保存的值,
二者还是有点差别啊?
回复
支持
反对
使用道具
举报
显身卡
Tetris
Tetris
当前离线
积分
264
IP卡
狗仔卡
发表于 2005-5-27 15:26:10
|
显示全部楼层
第一个相当于:
edx=ebp-4
第二个相当于:
edx=eax+eax*4
都是计算啊.
回复
支持
反对
使用道具
举报
显身卡
kj501
kj501
当前离线
积分
5317
IP卡
狗仔卡
发表于 2005-5-28 10:54:22
|
显示全部楼层
lea所做的实际上就是执行计算。你把计算的结果当成地址,它就是地址。你把计算的结果作为数值,这是数值。具体要看上下文。
回复
支持
反对
使用道具
举报
显身卡
返回列表
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
注册
本版积分规则
发表回复
回帖后跳转到最后一页
Copyright © 2002-2023
LinuxSir.cn
(http://www.linuxsir.cn/) 版权所有 All Rights Reserved.
Powered by
RedflagLinux!
技术支持:
中科红旗
|
京ICP备19024520号
快速回复
返回顶部
返回列表