以高字节地址为字地址是什么
前言
今天在做作业的时候遇到一个说法:“采用以高字节地址为字地址的存放方式”。
概念
- 字(word):即固定位数的二进制数字组合,通常是16位或32位。
- 字地址(word address):存储某一个字的起始地址。
例子
比如下面这段汇编代码,地址0x401672处的指令:
40166d: b8 01 00 00 00 mov $0x1,%eax
401672: ba d0 52 40 00 mov $0x4052d0,%edx
401677: 48 63 ce movslq %esi,%rcx
40167a: 39 44 8d c0 cmp %eax,-0x40(%rbp,%rcx,4)
可以看到这条指令大小为5个字节,表示为ba d0 52 40 00
。指令为mov $0x4052d0,%edx
。
这是一条数据传送指令,将立即数0x4052d0
传送到寄存器edx
中。显然,5个字节数据的后4个字节,是这个立即数。但这个立即数的表示是反着的,是以一个字节为一块反着的。其实,数据的这种存放方式叫做小端模式,这段汇编代码是x86架构下的。
而这种存放方式,也叫“采用以低字节地址为字地址的存放方式”。
对于这个例子:
- 字地址:后四字节的起始地址,即0x401673。
- 低字节:
0x4052d0
这个立即数的低字节是d0
。
那么,如果是“采用以高字节地址为字地址的存放方式”:
这条指令就为401672: ba 00 40 52 d0 mov $0x4052d0,%edx
。
这样看起来就很舒服,这种方式也叫大端模式。
总结
- 大端法 对应 “采用以高字节地址为字地址的存放方式”。
- 小端法 对应 “采用以低字节地址为字地址的存放方式”。
比如:栈中存储1234H这个数
本文来自博客园,作者:江水为竭,转载请注明原文链接:https://www.cnblogs.com/Az1r/p/17330975.html