找回密码
 立即注册
搜索
热搜: 活动 通知
查看: 309|回复: 3

低字节序 和 高字节 疑问

[复制链接]

1

主题

6

回帖

67

积分

至尊会员

积分
67

至尊会员

发表于 2024-6-7 09:11:21 | 显示全部楼层 |阅读模式
老师好,请教一个字节序的问题,如下图所示,不知道是不是应该这样理解:

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×

350

主题

279

回帖

2818

积分

管理员

积分
2818
发表于 2024-6-7 14:11:12 | 显示全部楼层
1和2是对的,没有问题,很正确。
指令执行时,因为是按字读,所以是区分字节序的。因为是x86,所以是按低端字节序的。

3

主题

33

回帖

381

积分

至尊会员

积分
381

至尊会员

发表于 2024-6-7 17:00:04 | 显示全部楼层
我觉得可以换一个理解方式,内存是按照字节访问的,比如在0x1000地址里的字节 0x71,不用管小端还是大端,怎么读这个字节都是0x71
但是一个字节以上的访问时,就要考虑小端还是大端,比如在0x1000里是0x71,在0x1001里是44,那么从0x1000地址读取一个字(两字节)时,小端就应该是0x4471,大端读出来是0x7144
这里我觉得很容易和排版搞混,比如我们打印在书上和写代码,地址都是从左到右,从上到下增长,上面的存储在文件里应该是
0x1000  0x1001
0x71      0x44
在代码里就要看你想要什么值,如果是mov eax, 0x4471,那符合小端要求,如果是mov eax, 0x7144,符合大端要求
最后,代码执行时EIP是地址自然增长(除了转移执行外),但是通过读取EIP指向地址的指令内容还是按照大小端规则的

1

主题

6

回帖

67

积分

至尊会员

积分
67

至尊会员

 楼主| 发表于 2024-7-20 22:35:58 | 显示全部楼层
站长 发表于 2024-6-7 14:11
1和2是对的,没有问题,很正确。
指令执行时,因为是按字读,所以是区分字节序的。因为是x86,所以是按低端 ...

谢谢,我在研究一下
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|鼠侠网 ( 吉ICP备19001332号 )

GMT+8, 2024-9-8 09:18 , Processed in 0.236961 second(s), 20 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表