zoukankan      html  css  js  c++  java
  • 计算机指令系统

    基本概念:

    指令字长:一条指令中所包含的二进制码的位数。主要取决于操作码长度、地址长度和操作数地址的个数

    机器字长:计算机依次能够处理的二进制数据的位数。

    一般情况下,机器字长是8的整数倍。指令字长不一定和机器字长一致。指令的字长可以小于机器字长,称为短格式指令,反之称为长格式指令;

    早期指令和机器字长相等,控制方式简单,指令字长固定;随着计算机发展,逐渐出现了变字长的指令。一台计算机可以兼容多种长度的指令

    -----

    指令一般由操作码和地址码两个部分组成        操作码+地址码

    1)操作码:说明该指令要执行的动作,也就是命令   长度可以是固定的,也可以是可变的

    2)地址码:三地址/二地址/一地址和零地址指令

    存在不同地址数的情况是因为不同指令要处理的情况不同。例如,三地址指令可能是需要将地址B、C的数相加再放入地址A,一地址指令可能是因为计算机隐含了另一个地址。如果操作数的地址隐含在SP这些指针里面,那么零地址也是可能的。

    此外,地址部分除了主存地址,放置寄存器地址也可用。   对于arm指令集,它拥有load/stored架构,在读写数据方面还有一些区别。

    ----------以16位机为例

    对于一套指令,操作码的长度影响指令条数。如果一套指令集只允许4位操作码,那它只可能有15种三地址指令,但是允许操作码变长,它还可拥有15条二地址/15条一地址和16条零地址指令

    -----------

    指令的寻址方式:

    1.指令寻址

    1)顺序寻址

         指令在主存中按顺序排列,依次执行。由PC寄存器记录地址,每次+1;

    2)跳跃寻址

       部分指令执行后需要跳转。此时需要用该指令携带的地址去替换PC寄存器的内容

    2.数据寻址

    1)立即数寻址 指令中自带数据

    2)直接寻址  指令里面有所需数据的直接地址

    3)间接寻址  指令里面带有间接地址,先在存储器中取出该地址内数据,再用数据作为地址取到所需数据

    4)寄存器寻址

    5)寄存器间接寻址

    6)变址寻址  指令中指定一个寄存器和偏移量  寄存器的值+偏移量形成地址

    7)基址寻址

    8)基址变址寻址

    9)相对寻址  PC寄存器的值加上偏移量构成实际地址

    10)堆栈寻址通过SP指针访问堆栈获取操作数,获得地址

  • 相关阅读:
    leetcode 268. Missing Number
    DBSCAN
    python二维数组初始化
    leetcode 661. Image Smoother
    leetcode 599. Minimum Index Sum of Two Lists
    Python中的sort() key含义
    leetcode 447. Number of Boomerangs
    leetcode 697. Degree of an Array
    滴滴快车奖励政策,高峰奖励,翻倍奖励,按成交率,指派单数分级(1月3日)
    北京Uber优步司机奖励政策(1月2日)
  • 原文地址:https://www.cnblogs.com/namezhyp/p/14161900.html
Copyright © 2011-2022 走看看