【考研计算机组成原理】强化 一堆指令的执行大题

文章目录:

一:X86

二:MIPS

三:解题方法


一:X86

算数、逻辑运算类指令(OP目的地址,源地址)
    加—OP: add
    减——OP: sub
    乘——OP: mul
    除——OP: div
    左移——OP: shl
    右移——OP: shr


分支结构(if/else)
    判断条件(本质是减法)—cmp A,B
        本质是A-B
        A-B的结果信息放到PSW中
            无符号数减法关注CF、ZF
            有符号数减法关注OF.SF、ZF
    跳转指令
          转移指令,通常采用相对寻址。用补码表示偏移量,补码的值通常意味着要往前/往后跳多少个地址指令
        xxx(条件跳转)
        jmp(无条件跳转),goto
        格式——OP跳到哪儿
     

循环结构(for while)
    xxxloopxxxx <label>——原理同跳转指令
    条件跳转指令jxxxx 也可以用于实现循环
  

函数调用/返回
    调用指令一 call <label>
        修改PC的值,跳转到<label>
        与跳转指令的区别
            call指令会将当前函数的相关信息入栈
            入栈信息︰返回地址(当前的PC)
    返回指令——ret
        当前函数的信息出栈
        恢复上一层函数的运行现场,包括栈底指针ebp、程序计数器pc等


局部变量的定义
    每个函数内的局部变量,是根据该函数的栈底指针进行一个偏移来找到的

二:MIPS

算数、逻辑运算类指令
    加——OP: add
    减——OP: sub
    乘OP: mul
    除—OP: div
    左移——OP: shl
    右移——OP: shr

无条件转移指令jmp

条件转移指令
        转移指令,通常采用相对寻址。用补码表示偏移量,补码的值通常意味着要往前/往后跳多少条指令
        根据题目条件,灵活判断,验证OFFSET的真值是多少
    bxxx—b开头,意思是branch
    jxxxx


Load指令——Load寄存器,内存地址,会访问内存的指令

Store指令——Store内存地址,寄存器,会访问内存的指令

结合五段式指令流水线考察

三:解题方法

X86
    先搞懂C语言
    基于C语言的逻辑分析机器指令


MIPS
    先搞懂C语言
    基于C语言的逻辑分析机器指令
    对指令进行分类——五类指令,每一类指令的运行原理要搞清楚
    安排指令流水线
    分析数据冒险、控制冒险

补充:强化课结课测验中,给大家补充了汇编语言的另一种格式AT&T

猜你喜欢

转载自blog.csdn.net/liu17234050/article/details/124205275