• 以高字节地址为字地址是什么


    前言

    今天在做作业的时候遇到一个说法:“采用以高字节地址为字地址的存放方式”


    概念

    • 字(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这个数


    __EOF__

  • 本文作者: 江水为竭
  • 本文链接: https://www.cnblogs.com/Az1r/p/17330975.html
  • 关于博主: 评论和私信会在第一时间回复。或者直接私信我。
  • 版权声明: 本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
  • 声援博主: 如果您觉得文章对您有帮助,可以点击文章右下角推荐一下。
  • 相关阅读:
    【Python深度学习】Python全栈体系(二十九)
    Dubbo面试系列问题总结
    vue 内置指令-v-pre/v-memo
    C++多态
    kong 和konga网关部署及使用
    L. Lemper Cooking Competition(前缀和/逆序对/树状数组/归并排序)
    记一次http接口自动重试现象的排查
    sql server服务无法启动怎么办?如何正常启动?
    VSCODE远程链接服务器、服务器运行ipynb文件,本地查看
    C练题笔记之:Leetcode-137. 只出现一次的数字 II
  • 原文地址:https://www.cnblogs.com/Az1r/p/17330975.html