寻址技术
寻址,就是寻找地址。
给你一个房间号F1003,让你找这个房间。如果我们第一次来到一个新校园,好懵逼啊,这怎么找,F代表什么,1003难道是第一千零三个房间吗?或者F1是某栋楼的简称,003是第三个房间?
(1)如果规定是,F表示辅助楼,第一个数代表楼层,后3位数是房间编号。
(2)然后给我一条去往辅助楼的路线,告诉我楼梯在楼宇中的位置。
OK,没问题,很快找到这个小房间。这里第一点对应的术语是编址方式,第二点是寻址方式。
编址方式
下面每个格子代表一位,一行有16个格子,代表机器字长为16
位编址
一位一个地址
字节编址
一个字节(8位)一个地址
在计算机中最基本的单位是字节,位地址中的大多数地址都不会使用,造成大量浪费。
对于处理字符,每个字符占一个字节,字节编址比较好。
对于处理数字,数字一般占用2个(short)或4个(int、float)字节,字编址比较好。
寻址方式
对于寻找的目标不同,寻址分为指令寻址和数据寻址
如果寻找的是将要执行的指令的地址,就是指令寻址
如果寻找的是操作数的地址,就是数据寻址
天真永不消逝,浪漫至死不渝——墨香铜臭
不管你在哪里,兜兜转转还是会找到你。地址也是一样。
数据寻址
立即寻址
简单粗暴,直接去见你。操作数就在操作码指令里,程序直接调用该操作数,但仍然得根据操作码去找具体的操作。
寄存器寻址
根据寄存器的编号,去指定的寄存器取数,速度很快。
直接寻址
根据主存地址去主存中找操作数
间接寻址
对地址进行分类,如果一个地址指向的是地址,那么称它为间接地址;如果指向的是操作数,那么称它为有效地址
主存地址可以指向间接地址或有效地址,间接地址可以指向间接地址或有效地址
为了区分是间接地址还是有效地址,用存储单元的最高位来分辨
寄存器间接寻址
寄存器2中存放的是有效地址
变址寻址
将寄存器中的变址值(变量)与形式地址(常量)相加,得到有效地址
基址寻址
和变址寻址类似
将寄存器中的基址值(常量)与位移量(变量)相加,得到有效地址
位移量可正可负
相对寻址
将程序计数器中的指令地址(变量)与位移量(变量)相加,得到有效地址
页面寻址
将地址高n位相同的主存单元分为一组,每组称为1个页面
有效地址分成两部分,一部分是页面地址,用于找到对应的页;另一部分是页内地址,用于找到页中的主存单元
根据页面地址的来源,页面寻址可分为3种方式
基页寻址(零页寻址):页面地址固定全0
当前页寻址:页面地址等于程序计数器(PC)的高几位
页寄存器寻址:页面地址取自寄存器
指令中的多个地址码的寻址方式可不同
指令寻址
顺序寻址
不用干预,自动按顺序往下执行。这个指令的顺序保存在程序计数器(PC)中
跳跃寻址(同上)
1.直接寻址
2.相对寻址
3.间接寻址
感谢您的阅读,希望您能摄取到知识!加油!冲冲冲!(发现光,追随光,成为光,散发光!)我是程序员耶耶!有缘再见。<-biubiu-⊂(`ω´∩)