博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
深入理解程序设计-使用Linux 32bit 汇编语言
阅读量:5967 次
发布时间:2019-06-19

本文共 957 字,大约阅读时间需要 3 分钟。

hot3.png

 计算机体系结构

2.1 内存结构

1,计算机将每个固定大小的存储单元依次编号,每个存储单元大小为1个Byte(8个bit)

2,内存即可以存储CPU指令,也可以存储数据。只是CPU对内存数据的解释不一样。

2.2 CPU的构造

CPU一次从内存中读取一条指令并执行,这个过程即为读取-执行周期(又称为指令周期)。需要以下元件:

1,程序计数器:保存即将执行的下一条指令的内存地址。CPU先查看程序计数器,然后提取存放在指定内存地址的数字,接着传递给指令解码器。

2,指令解码器:解释指令。具体包括操作码、涉及的内存单元。

3,数据总线:简单的理解为CPU和内存之间的物理连线。通过它获取内存单元中存储的数据

4,通用寄存器:进行运算的主要地方,一般用来处理算术运算、比较运算等。CPU的通用寄存器数量较少,大部分信息存储在主存中。

5,逻辑计算单元:CPU取回需要的所有数据后,将数据和解码后的指令传递给逻辑计算单元。它是实际执行指令的地方。

2.5 寻址方式(数据访问方式)

1,立即数寻址:在指令中直接给出数值,而不是告诉CPU去哪个地址取数据

2,寄存器寻址:访问CPU的寄存器,而不是内存地址

3,直接寻址(针对内存):访问内存地址

4,变址寻址(针对内存):包含内存地址和变址寄存器(存储相对内存地址的偏移)

5,间接寻址(针对寄存器中保存的内存地址):指令中包含一个寄存器,该寄存器中存储的是指向要访问数据的指针

6,基址寻址(针对寄存器中保存的内存地址+偏移量):间接寻址+偏移量

 

汇编术语

字长:计算机中,典型寄存器的大小。

  x68 32bit的字长为4字节

  地址的长度也是4字节

指针:存储在内存中的数据的地址。

伪指令:在汇编程序中,任何以.开始的指令都不会被直接翻译成机器指令,这些针对汇编程序本身的指令,它首先要经过编译器的处理,而不是直接由计算机执行,被称为汇编指令伪操作

.section:它将汇编程序分为几个部分。一般包括以下几个段:

.data:表示数据段的开始,数据段要列出程序数据所需的所有内存存储空间。

.text:文本段(地址段),表示地址段的开始,包括程序执行的指令。

 

 

转载于:https://my.oschina.net/u/2567345/blog/1526804

你可能感兴趣的文章
度量时间差
查看>>
通过jsp请求Servlet来操作HBASE
查看>>
Shell编程基础
查看>>
Shell之Sed常用用法
查看>>
3.1
查看>>
校验表单如何摆脱 if else ?
查看>>
<气场>读书笔记
查看>>
Centos下基于Hadoop安装Spark(分布式)
查看>>
3D地图的定时高亮和点击事件(基于echarts)
查看>>
mysql开启binlog
查看>>
设置Eclipse编码方式
查看>>
分布式系统唯一ID生成方案汇总【转】
查看>>
并查集hdu1232
查看>>
Mysql 监视工具
查看>>
从前后端分离到GraphQL,携程如何用Node实现?\n
查看>>
Linux Namespace系列(09):利用Namespace创建一个简单可用的容器
查看>>
博客搬家了
查看>>
Python中使用ElementTree解析xml
查看>>
jquery 操作iframe、frameset
查看>>
解决vim中不能使用小键盘
查看>>