美文网首页
第二讲 指令系统体系结构(Instruction Set Arc

第二讲 指令系统体系结构(Instruction Set Arc

作者: Lynn_4f26 | 来源:发表于2019-11-19 08:02 被阅读0次

    内容要点:x86 ISA,MIPS ISA

    构造一台自己的计算机


    • 指令格式
    第一个字节 第二个字节
    xxxx xxxx xxxx xxxx
    操作码 寄存器号 存储单元地址

    X86体系结构与指令简介


    X86体系结构

    • Intel 8086 (1978年)

      • 内部的通用寄存器为16位,即既能处理16位数据,也能处理8位数据

      • 对外有16根数据线和20根地址线,可寻址的内存空间为1MByte(2^{20}

      • 物理地址的形成采用”段加偏移“的方式

        <- 控制总线->
        CPU <-地址总线 20-bit-> 存储器
        <-数据总线 16bit->
      • 通用寄存器R_0,...,R_n

        • 数据寄存器AX,BX,CX,DX:均为16位寄存器,每个都可分为两个8位寄存器,适用大多数算术运算和逻辑运算指令
      • 标志寄存器FLAGS(标志位两大类)

        • 状态标志:反映CPU的工作状态,如执行加法运算时是否产生进位
        • 控制标志:对CPI的运行起特定控制作用
      • 指令指针寄存器IP

        • 保存一个内存地址,指向当前需要取出的指令
        • 当CPU从内存中取出一个指令后,IP会自动增加,指向下一指令地址
        • IP寄存器的寻址能力2^{16}=65536(64K)Byte,8086对外有20位地址线,寻址范围:2^{20}=1MByte
      • 段寄存器Segment Register

        • 与其他寄存器联合生成存储器地址

        • CS 代码段寄存器(Code Segment)
          DS 数据段寄存器(Data Segment)
          ES 附加段寄存器(Extra Segment)
          SS 堆栈段寄存器(Stack Segment)
    • IA-32体系结构

      • Intel 80386 (1985年)

        • 主频12.5-33MHz,27.5万个晶体管

        • 80X86系列中的第一款32位微处理器

        • 支持32位的算术和逻辑运算,提供32位的通用寄存器

        • 地址总线扩展到32位,可寻址4GB的内存空间

        • 实模式-保护模式-虚拟8086模式

    • X86-64体系结构

    X86指令简介

    • 指令的主要类别

      • 运算类指令:如加、减、乘、除、与、或、非等
        • ADD指令(加)
          • 格式:ADD DST,SRC
          • 操作:DST<-DST+SRC
        • ADC指令(带进位的加)
          • 格式:ADC DST,SRC
          • 操作:DST<-DST+SRC+CF
        • INC指令(加1)
          • 格式:INC OPR
          • 操作:OPR<-OPR+1
      • 传送类指令:如从存储器到通用寄存器,从通用寄存器到I/O接口等
        • 作用:把数据或地址传送到寄存器或存储器单元中
        • MOV指令(传送)
          • 格式:MOV DST,SRC
          • 操作:DST<-SRC
          • 说明:DST表示目的操作数,SRC表示源操作数,MOV指令把一个操作数从源传送至目的,源操作数保持不变
      • 控制类指令:如暂停处理器,清除标志位等
        • 作用:控制CPU的功能,对标志位进行操作
      • 转移类指令:如无条件转移,条件转移,过程调用等
        • 作用:改变指令执行顺序
        • 说明:根据是否有判断条件,分为「无条件转移指令」和「条件专业」指令;根据转移目标地址的提供方式,可分为「直接转移」和「间接转移」
    • 指令的运行结果

      • 改变通用寄存器的内容:如ADD AX,DX

      • 改变存储单元的内容:如MOV [10H],CX

      • 改变标志位:如产生进位

      • 改变指令指针:如 JMP [BX]

      • 改变外设端口的内容:如访问显示端口

      • 其他...

    MIPS体系结构


    • 全称:Microprocessor without Interlocked Piped Stages

      • 主要关注点

        • 减少指令的类型
        • 降低指令复杂度
      • 基本原则:A simpler CPU is a faster CPU

      • MIPS指令主要特点

        • 固定的指令长度

        • 简单的寻址模式

        • 指令数量少,指令功能简单(一条指令只完成一个操作)

        • 只有Load和Store指令可以访问存储器

        • 需要优秀的编译器支持

    • MIPS指令简介

      • 基本格式:

        • R:Register,寄存器

        • I:Immediate,立即数

        • J:Jump,无条件转移

    运算指令 add rd, rs, rt sll rd, rt, shamt addi rt, rs, imm slti rt, rs, imm /
    访存指令 / lw rt, imm(rs) sw rt, imm(rs) /
    分支指令 jr rs beq rs,rt, imm j addr
    R型指令 I型指令 J型指令

    Quiz [1]


    1. 下列关于CISC和RISC的描述错误的是?

      A、CISC指令长度是不固定的

      B、CISC指令的操作数必须预存于寄存器中

      C、RISC指令长度是固定的

      D、RISC指令的操作数必须预存于寄存器中

      E、RISC架构的指令种类通常比CISC架构更少

      RISC:Reduced Instruction Set Computer,精简指令系统计算机
      减少指令的类型,降低指令复杂度
      CISC:Complex Instruction Set Computer,复杂指令系统计算机

    2. 下列关于Intel处理器及其推出时间描述错误的是?

      A、Intel 8086——1978年

      B、Intel 80286——1982年

      C、Intel 80386——1988年

      D、Intel Pentium——1993年

      E、Intel PentiumPro——1995年

      F、Intel Core i7——2008年

      G、Intel Core 2——2006年

      Intel 80386——1985

    3. x86体系结构中,寄存器EAX长度为多少位? 32位

      x86体系结构中,寄存器AX长度为多少位? 16位

    4. IA-32寄存器模型中包括以下哪些寄存器?(多选题)

      A、通用寄存器

      B、指令指针寄存器

      C、页面寄存器

      D、标志寄存器

      E、段寄存器

    5. 8086系统中标志位CF的含义是? Carry Flag

      8086系统中标志位ZF的含义是? 零标志(Zero Flag)

      8086系统中段寄存器DS的含义是?数据段寄存器(Data Segment)

      8086系统中段寄存器CS的含义是?代码段寄存器(Code Segment)

      ES:附加段寄存器(Extra Segment)

      SS:堆栈段寄存器(Stack Segmeny)

    6. 设CS=2500H,DS=2400H,SS=2430H,BP=0200H,SI=0010H,DI=0206H,计算下列x86指令源操作数的物理地址MOV AX,[2000H] *26000H*

      物理地址 = DS:2000H = 2400H16(左移4位)+2000H = 24000H + 2000H = 26000H
      CS(CodeSegment):存放当前正在运行的程序代码所在段的段基址
      16 + IP存放的偏移量 = 指令的物理地址。

      设CS=2500H,DS=2400H,SS=2430H,BP=0200H,SI=0010H,DI=0206H,计算下列x86指令源操作数的物理地址:MOV AX,[BP+SI+4] *24514H*

      2430H * 16 + 0200H + 0010H + 4H = 24300H + 0214H = 24514H

      设CS=2500H,DS=2400H,SS=2430H,BP=0200H,SI=0010H,DI=0206H,计算下列x86指令源操作数的物理地址:MOV AX,[DI+100H] *24306H*

      2400H * 16 +0206H +100H = 24000H +0306H = 24306H

    7. 下列x86指令中,哪些属于算术运算指令?

      A、ADD

      B、DEC

      C、MOV

      D、IN

      E、LEA:Load Effective Address

      I、CALL:调用子程序

      J、JNZ:条件转移指令

      K、LOOP

      L、MUL:无符号乘法

    8. 下列关于MIPS指令的主要特点说法错误的是?

      A、指令长度固定

      B、寻址模式简单

      C、只有Load和Store指令可以访问存储器

      D、需要优秀的编译器支持

      E、指令数量多,且功能复杂

    9. MIPS按照指令的基本格式可以分为三种类型,以下不属于这三种类型的是?

      A、R型指令

      B、I型指令

      C、J型指令

      D、O型指令

    10. 某MIPS指令的机器码是0x20A5FFFF,对应的汇编指令是什么? *addi $a1,$a1,-1*

      二进制数均以补码的形式存放在计算机中

      正数:补码 = 原码

      负数:补码 = 除符号位,原码剩余每位取反,末位+1

      FFFF= 1111 1111 1111 1111 为补码形式,化为原码

      1111 1111 1111 1110

      1000 0000 0000 0001 = -1

      0010(2) 0000(0) 1010(A) 0101(5) 1111 1111 1111 1111(FFFF) =>可知为I型

      001000(op = 8 = addi) 00101(rs = 5 = a1) 00101(rt = 5 =a1) 1111 1111 1111 1111(immediate = -1)

      某MIPS指令的机器码是0x0005402A,对应的汇编指令是什么? *slt $t0,$0,$a1*

      0000 0000 0000 0101(5) 0100(4) 0000 0010(2) 1010(A)

      000000(R型指令) 00000(rs = 0 = 0) 00101(rt = 5 =a1) 01000(rd = 8 = $t0) 00000 101010(可知指令类型为slt )

    11. 阅读下面的x86汇编程序,回答问题。

      设DS=1000H

      MOV SI, 1250H

      MOV DI, 1370H

      MOV CL, 3

      MOV AX, DS

      MOV ES, AX

      MOV BX, 5

      STD

      REP MOVSB

      请问,在这次串传送操作中,完成了第一个元素的传送后,SI寄存器的值是什么? **124FH*

      STD(DF置为1,从源串的高位开始传送)

      源串地址:DS:SI = 1000H * 16 + 1250H = 11250H

      因为是从高位开始传送,传送完一个元素后,SI与DI自动减1

      11250H = 112 0101 0000 (不够减向前借2)- 0001 = 112 4 F

      阅读下面的x86汇编程序,回答问题。

      设DS=1000H

      MOV SI, 1250H

      MOV DI, 1370H

      MOV CL, 3

      MOV AX, DS

      MOV ES, AX

      MOV BX, 5

      CLD

      REP MOVSB

      请问,这次串传送操作,总共传送了多少个字节的数据? 不确定

    12. 如果想用8086 CPU把内存中某个区域的1024个字节的数据传送到另一个区域,可以选用如下三种方法:

      (1)只使用传送指令(MOV);

      (2)使用传送指令(MOV),并用条件转移指令建立循环语句的结构;

      (3)使用串传送指令(MOVSB)以及必要的配合指令,不使用循环语句的结构。

      请比较用这三种方法编写的程序,执行时访问存储器次数最少的是:方法三

      请比较用这三种方法编写的程序,执行时访问存储器次数最多的是:方法二

      请比较用这三种方法编写的程序,程序代码占用存储器空间最大的是:方法一

    13. 很多x86指令的功能比较复杂,往往一条x86指令可以完成的功能,需要多条MIPS指令才能实现。请问下列x86指令中,哪些确定能够只用一条MIPS指令完成对应的功能?(注:只需考虑这条指令本身,不用考虑对后续指令的影响)

      A、ADD ECX, 15H

      B、MOV EAX, 28H

      C、ADD EDX, EBX

      D、ADD EAX, [13H]

      E、MOV EDX, [EBX+11H]

      F、ADD [EBX+ESI*4+200H], EAX

      G、REP MOVSB

      H、JZ LOOP_1

      D/E/F (访寸需要额外的指令)


    1. 引用自本文链接:https://blog.csdn.net/wydyd110/article/details/81382073

    相关文章

      网友评论

          本文标题:第二讲 指令系统体系结构(Instruction Set Arc

          本文链接:https://www.haomeiwen.com/subject/fwqjictx.html