码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 【王道计算机组成原理】第四章 指令系统


    第四章 指令系统

    • 4.1 指令格式
      • 4.1.1 指令的基本格式
      • 4.1.2 扩展操作码指令格式
    • 4.2 指令的寻址方式
      • 4.2.1 指令寻址
      • 4.2.2 数据寻址
    • 4.3 程序的机器级代码表示
      • 4.3.1 高级语言与机器级代码之间的对应
      • 4.3.2 常用的x86汇编指令
      • 4.3.3 AT&T格式 V.S. Intel格式
      • 4.3.4 选择语句 机器级表示
      • 4.3.5 循环语句 机器级表示
    • 4.4 CISC和RISC的基本概念

    4.1 指令格式

    回顾:

    image-20220827160041775 image-20220827160110717 image-20220827160146254

    本章总览:

    image-20220827160233096

    4.1.1 指令的基本格式

    • 操作码、地址码概念
    image-20220827160520703 image-20220827160551605

    🧧 零地址指令

    image-20220827160916870

    🧧 一地址指令

    image-20220827161315335

    🧧 二、三、四地址指令

    image-20220827161429965 image-20220827161441372 image-20220827161453829
    • 根据地址码数目不同分类
    image-20220827161514878
    • 根据指令长度分类
    image-20220827161918426
    • 根据操作码的长度不同分类
    image-20220827161928547
    • 根据操作类型分类
    image-20220827161943477
    image-20220827161958739

    4.1.2 扩展操作码指令格式

    image-20220827194811433 image-20220827194836799

    注意:

    image-20220827194909737

    例:

    image-20220827195104490
    image-20220827195143685

    4.2 指令的寻址方式

    4.2.1 指令寻址

    image-20220827195204676

    回忆:

    image-20220827214238185
    • 定长指令字结构
    image-20220827215549249

    若主存按字节编址,PC每次+2:

    image-20220827220210489
    • 变长指令字结构
    image-20220827220324345
    • 顺序寻址、跳跃寻址

    image-20220827220454239

    这里顺序寻址的1 理解为 1个指令字长,**实际加的值会因指令长度、编址方式而不同 **

    这个例子当执行到3时:

    image-20220827221321593

    执行转移指令,将PC值修改为7:

    image-20220827221351105
    image-20220827221405102

    4.2.2 数据寻址

    image-20220827221422393

    数据寻址方式有10种:

    image-20220827232158115

    划分出四个位用来表示是什么方式:

    image-20220827232303938

    地址指令也可分多级:

    image-20220827232701668

    接下来都以 一地址指令 为例:

    1、直接寻址

    image-20220828162246609

    2、间接寻址

    image-20220828162310522 image-20220828162342514

    3、寄存器寻址

    image-20220828162417156

    4、寄存器间接寻址

    image-20220828162439189

    5、隐含寻址

    image-20220828162526750

    6、立即寻址

    image-20220828162542611
    image-20220828162559013
    • 偏移寻址
    image-20220828165218522 image-20220828165337100

    7、基址寻址

    image-20220828165422294 image-20220828165516636 image-20220828165527038

    8、变址寻址

    image-20220828165543128

    若不使用变址寻址,下图这样一个循环中会需要很多指令语句:

    image-20220828165722551

    使用变址寻址后:

    image-20220828165747273 image-20220828165802623

    基址&变址复合寻址:

    image-20220828165849210

    9、相对寻址

    image-20220828165951324 image-20220828170021369

    采用相对寻址后:

    image-20220828170057279 image-20220828170111592
    image-20220828170132346
    • 补充内容:
    image-20220828170203756

    10、堆栈寻址

    image-20220828170839832 image-20220828170853402
    image-20220828170904698

    4.3 程序的机器级代码表示

    4.3.1 高级语言与机器级代码之间的对应

    image-20220828220027296
    • x86汇编语言指令基础
    image-20220828220105895 image-20220828220126833 image-20220828220220051 image-20220828220257900 image-20220828220312824 image-20220828220328024
    • 历年真题
    image-20220828220405151
    image-20220828220348831

    4.3.2 常用的x86汇编指令

    image-20220828220452677
    • 常见的算数运算指令
    image-20220828223517974

    进行除法操作时,被除数会被提前放到edx和eax寄存器中;

    edx:eax 意思:在进行除法操作前,需要对被除数进行位扩展,因此把两个寄存器连起来用。

    image-20220828223542472
    • 常见的逻辑运算指令
    image-20220828223602979 image-20220828223622953

    4.3.3 AT&T格式 V.S. Intel格式

    考研一般用 Intel格式

    image-20220828224800775 image-20220828225151615

    4.3.4 选择语句 机器级表示

    image-20220828231443645
    • 无条件转移指令:
    image-20220828231534025 image-20220828231631948
    • 条件转移指令
    image-20220828231729463
    • 例子:
    image-20220828231825027

    –

    image-20220828231837815 image-20220828231906744
    • 扩展:cmp指令
    image-20220828231932843

    4.3.5 循环语句 机器级表示

    image-20220828232825032 image-20220828232838849 image-20220828232903336

    4.4 CISC和RISC的基本概念

    image-20220828233604448 image-20220828233622718 image-20220828233655515
  • 相关阅读:
    docker命令
    前端常用的CDN
    创建husky规范前端项目
    Kubernetes革命:云原生时代的应用编排和自动化
    使用 vscode 插件可视化制作和管理脚手架及原理解析
    硬盘不工作,可能原因不少!如何修复BIOS中未检测到的ATA/SATA硬盘
    R语言ggplot2可视化:使用ggpubr包的ggdotplot函数可视化点阵图(dot plot)、设置add参数在点阵图中添加箱图
    花生壳配置TCP服务器
    (续)SSM整合之springmvc笔记(异常处理器)(P1694-170)还没完
    golang数据结构与算法——十大排序算法
  • 原文地址:https://blog.csdn.net/weixin_48434658/article/details/126576311
  • 最新文章
  • 沪漂五周年了:我越来越迷茫了
    Agentic Skill Routing 实战:别再把所有 Skill 塞进 AI Agent 上下文
    MySQL-Seconds_behind_master的精度误差
    [MAF预定义ChatClient中间件-03]CachingChatClient——利用缓存省钱省时间
    AI的至暗历史:从万众期待到被政府撤资,AI的两次死亡徘徊
    Agent OS :五种驯服不确定性的范式
    PortSwigger SQL注入LAB11
    数据库即时编译JIT
    [Begin]AI Learn Data Day 0
    深度学习进阶(二十七)现代 LLM 的核心架构设计其二:SwiGLU
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
小工具 小游戏
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1

京公网安备 11010502049817号