• AT&T汇编语言及其寻址方式


    汇编语言论风格来分主要是两类,一类是Intel汇编,一类是AT&T汇编,分别被Windows和Linux作为主流风格。因为我博客以推荐Linux系统为主,所以以后多以Linux汇编为主要描述语言。 

    简单说一下AT&T汇编,"#"井号开头的是注释行,"."点开始的指令一般都是伪指令,"$"美元符号修饰立即数,"%"修饰寄存器。例如:

    寻址方式(Addrsing mode),就是指数据的组织方式,固定格式为:地址或偏移 (%基址或偏移量寄存器, %索引寄存器, 比例因子)

    则 最终地址 = 地址或偏移 + %基址或偏移量寄存器 + %索引寄存器  * 比例因子

    这一串东西基本上都是可选的,没写的项基本上算以0代替,不同的组合就成了不同的寻址方式,如下:

    1) 直接寻址

    movl ADDRESS, %eax

    ADDRESS其实就相当于"地址或偏移"里的地址,反正就是一个数字。

     

    2)寄存器寻址

    其实上面的例子也包括了寄存器寻址,顾名思义%eax就是寄存器寻址,代表对这个寄存器本身的写入或读出。

     

    3)立即寻址

    movl $2, %ebx

    我一直觉得立即寻址算不算寻址,反正它的意思就是把2这个数字写入%eax寄存器,$2就是立即寻址,其实就是立即数。

     

    4)间接寻址

    movl (%eax), %ebx

    (%eax)就是间接寻址了,意思就是访问eax寄存器里的数值所代表的地址。相当于通用公式里的%基址或偏移量寄存器。

     

    5)索引寻址(变址寻址)

    movl 0xFFFF0000(,%eax,4), %ebx

    0xFFFF0000(,%eax,4)就是索引寻址,意思是从0xFFFF0000地址开始,加上%eax * 4作为索引的最终地址。请自行匹配上面的通用公式。

     

    6)基址寻址

    movl 4(%eax), %ebx

    4(%eax)就是基址寻址,意思是以eax寄存器里的数值作为基址,加上4得到最终地址。也可以匹配到上面的通用公式,而且这个是很常用的寻址方式。

    https://www.cnblogs.com/orlion/p/5765339.html

    http://blog.csdn.net/column/details/linuxcode.html

    http://blog.csdn.net/jnu_simba/article/details/11747901

  • 相关阅读:
    webservice的cxf的客户端
    webservice用cxf发布SOAP
    webservice声明发布SOAP1.2
    webservice使用注解修改WSDL内容
    webservice获取天气信息
    结巴分词原理介绍
    Pytorch学习记录-torchtext和Pytorch的实例( 使用神经网络训练Seq2Seq代码)
    【Pandas】Pandas求某列字符串的长度,总结经验教训
    UTF-8与UTF-8 BOM
    logging.basicConfig函数
  • 原文地址:https://www.cnblogs.com/guochaoxxl/p/7878708.html
Copyright © 2020-2023  润新知