zoukankan      html  css  js  c++  java
  • Linux汇编教程04:寻址方式

    这一节,我们主要来讨论寻址方式,这一点十分重要。
    我们上一节有稍微提了一下,内存地址引用的通用格式:
    地址或偏移(%基址寄存器, %索引寄存器, 比例因子 )
    结果地址 = 地址或偏移 + %基址寄存器 + 比例因子 + %索引寄存器
    地址或偏移和比例因子必须是常数,剩下的那两个必须是寄存器,在缺省的情况下,都用0来代替。

    立即寻址方式
    直接将值加载到目地位置中

    movl $221, %eax</p>
    • 1

    直接寻址方式
    通过使用地址或偏移来实现

    movl ADDRESS, %eax</p>
    • 1

    索引寻址方式
    通过地址或偏移以及%索引寄存器部分实现。你可以将任何通用寄存器用作索引寄存器。

    movl data_items( , %ebx, 4 ), %eax</p>
    • 1

    间接寻址方式
    以寄存器中的值作为地址,获得这个地址里的值。

    movl (%eax), %ebx</p>
    • 1

    基址寻址方式
    和间接寻址类似,但多了一个常量和寄存器中的地址相加,

    movl 4(%eax), %ebx</p>
    • 1

    寄存器寻址方式
    就是数据的移入移出

    这些方式大家要理解他们的特点,了解原理,到时候讲到堆栈之类的方便多了。

    补充:

    我们之前有讲过,32位寄存器都以e开头开头,%eax是我们的扩展寄存器,这种命名实现对以前的兼容,
    以前使用%ax的16位寄存器,当然32位寄存器也可以使用%ax,%ax是%eax最低有效字(数值的后半部分),
    同理%ax还可以封出一字节的%ah和%al。%ah是%ax中最高有效半字,%al是最低有效半字
  • 相关阅读:
    JSON
    在ubuntu上部署Django
    Django安装
    Python3 编程第一步
    Python3 字典
    nginx 服务器下载安装配置详解
    彻底删除Navicat注册表
    JS 对输入的姓名 手机号码 邮箱做校验
    mysql 启动报错
    网线没问题 没法上网
  • 原文地址:https://www.cnblogs.com/guochaoxxl/p/10468715.html
Copyright © 2011-2022 走看看