zoukankan      html  css  js  c++  java
  • 计算机系统之汇编---IA32处理器数据格式及数据操作

    计算机系统之汇编---IA32处理器数据格式及数据操作

    IA32数据格式:
    Intel用术语“字”表示16位数据类型,因此。称32位数为“双字”,称64位数为“四字”。





    Char*这里指的是全部指针类型。注意:c语言新添加的long long是八字节,可是硬件IA32不支持这个类型。



    寄存器(8个32位的寄存器,均以%e开头)
    %eax、%ecx、%edx:调用者保存(数据)寄存器。当过程p调用q。q能够覆盖这些寄存器。可是不会改变p中的数据。
    %ebx、%esi、%edi:被调用者保存(数据)寄存器。当过场p调用q。q必须在覆盖这些寄存器数据前。要把它们保存到栈,
    并在调用结束返回时恢复它们,这些数据p或其它过程须要它们。
    %esp、%ebp:有关栈指针的



    大多数指令有一个或多个操作数。指示出运行一个操作中要引用的源数据值,以及放置结果的目标位置。

    源数据值能够以常数形式给出。或从寄存器或存储器中读出,结果能够保存放在寄存器或存储器中。

    操作数分三种:
    >>>1. 马上数即常数,用$开头。后面加一个整数表示;
    >>>2. 寄存器数,对字操作而言表示某个寄存器中的保存的值;对字节操作而言是8个单字节寄存器中的 一个,比方:%al(eax寄存器中的低8位)
    >>>3. 存储器引用,依据计算出的有效地址来訪问存储器的某个位置。包含四部分:马上数偏移(lmm)、基址寄存器 Eb、变址寄存器 Ei、比例因子s。 有效地址被计算为 Imm + R[Eb] + R[Ei] * s。

    (R[Eb]表示寄存器Eb的值,R[Ei]表示寄存器Ei的值。s的值仅仅能是1,2,4或者8) 下表中Mb[addr] 表示对存储器在存储器中从地址addr開始的b个字节值的引用。

    有关操作数格式表



    比如:地址0x100的值是56,那么操作数0x100的值就是56。属于绝对寻址;$0x100的值0x100,是马上数寻址;

  • 相关阅读:
    检测服务器是否开启重协商功能(用于CVE-2011-1473漏洞检测)
    Wireshark解密HTTPS流量的两种方法
    text2pcap: 将hex转储文本转换为Wireshark可打开的pcap文件
    Hibernate框架(五)Hibernate主键生成策略
    HIbernate框架(四)实现添加操作
    Hibernaete框架(三)搭建hibernate环境(重点)
    Hibernate框架(二)什么是orm思想(重点)
    Hibernate框架(一)Hibernate框架是什么?
    拦截器和过滤器的区别
    谈谈java中遍历Map的几种方法
  • 原文地址:https://www.cnblogs.com/llguanli/p/7029312.html
Copyright © 2011-2022 走看看