CSAPP第4章:RISC和CISC指令集

2023-11-08 06:20
文章标签 risc cisc 指令集 csapp

本文主要是介绍CSAPP第4章:RISC和CISC指令集,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

RISC和CISC指令集

 IA32被称为复杂指令集计算机(CISC),与精简指令集计算机(RISC)相对。

从历史上看,先出现了CISC机器,计算机不断发展使指令集非常大。

RISC设计理念在80年代早期发展,使用更简单的指令集产生高效的代码。

许多加到指令集中的高级指令很难被编译器产生,并且这些指令很少被用到,一个简单的指令集可以很少的硬件实现,能以高效的流水线组织起来。

CISC和RISC比较:

(1)CISC指令数量多,Intel描述全套指令有700多页。

RISC指令数量少,通常少于100个

(2)CISC有些指令执行时间很长,包括一个整块从存储器的一个部分拷贝到另一部分的指令,以及其他一些多个寄存器的值拷贝到存储器或从存储器拷贝到多个寄存器的指令。

(3)RISC没有较长执行时间的指令。

 有些早期的RISC机器没有整数乘法指令,要求编译器通过一系列加法实现乘法。

CISC编码长度可变。

RISC编码是固定长度的,所有指令编码都是4个字节。

(4)CISC指定操作数的方式多样,存储器操作数指示符可以由基址、变址或伸缩因子组成。

RISC只有简单寻址方式,通常只有基址和位移寻址。

(5)CISC可以对存储器和寄存器操作数进行算术和逻辑运算。

         RISC使用load/store体系结构。

RISC只能对寄存器操作数进行算术和逻辑运算,允许使用存储器引用的只有load和store指令。

load是从存储器读到寄存器,store从寄存器写到存储器。

(6)CISC对机器级程序实现细节不可见。

RISC对机器级程序来说实现细节可见。

有些RISC机器禁止某些特殊的指令序列,而有些跳转要到下一条指令执行完后才生效,编译器必须在这些约束条件下进行性能优化。

(7)CISC有条件码,设置了一些特殊的标志位,可以用来作为条件分支检测。

RISC没有条件码,相反对条件检测来说,要用明确的测试指令,将测试结果放在一个普通的寄存器中。

(8)CISC是栈密集的过程链接,栈被用来存取过程参数和返回地址。

      RISC是寄存器密集的过程链接。寄存器被用来存取过程参数和返回地址。

 所以有些过程能完全避免存储器引用,通常处理器有更多的(<=32)寄存器。

这篇关于CSAPP第4章:RISC和CISC指令集的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/368308

相关文章

RISC-V (十二)系统调用

系统模式:用户态和内核态         当前的代码都是实现在machine模式下。 系统模式的切换         epc寄存器的值存放的是ecall指本身的地址 。 用ecall指令 系统调用的执行流程         mret这条指令会利用status的mpp值恢复到之前的特权级别。  蓝色的线表示涉及到权限切换。  系统调用的传参

RISC-V (十)任务同步和锁

并发与同步 并发:指多个控制流同时执行。         多处理器多任务。一般在多处理器架构下内存是共享的。           单处理器多任务,通过调度器,一会调度这个任务,一会调度下个任务。  共享一个处                                理器一个内存。                 单处理器任务+中断: 同步: 是为了保证在并发执行的环境中各个控制流可

Banana Pi BPI-F3 进迭时空RISC-V架构下,AI融合算力及其软件栈实践

RISC-V架构下,AI融合算力及其软件栈实践 面对未来大模型(LLM)、AIGC等智能化浪潮的挑战,进迭时空在RISC-V方向全面布局,通过精心设计的RISC-V DSA架构以及软硬一体的优化策略,将全力为未来打造高效且易用的AI算力解决方案。目前,进迭时空已经取得了显著的进展,成功推出了第一个版本的智算核(带AI融合算力的智算CPU)以及配套的AI软件栈。 软件栈简介 AI算法部署旨

[学习笔记]《CSAPP》深入理解计算机系统 - Chapter 3 程序的机器级表示

总结一些第三章的一些关键信息 Chapter 3 程序的机器级表示结构 updating... Chapter 3 程序的机器级表示 局部变量通常保存在寄存器中,而不是内存中,访问寄存器比内存快的多. 有些时候,局部数据必须存放在内存中, 寄存器不足够存放所有的本地数据对一个局部变量使用地址运算符 &, 因此必须能够为它产生一个地址某些局部变量是数组或结构,因此必须能够通过数组或

RISC-V (八)定时器中断

​​​​​​​riscv中断的分类 Core local INTerrupt: CLINT CLINT编程接口-寄存器         mtime寄存器,由中断触发的时钟,按照固定频率计数。

字节全员标配的内部指令集鼠标垫,我的粉丝每人包邮送一块

最近很多粉丝后台说 steam 都开夏促了,看公号这么久有啥福利没……年中了是该给大家发点福利,我仔细琢磨了一下,找大厂的朋友要了一套他们撸了多年的 Java 算法逻辑 + 面试要点的私货,于是叫上合作伙伴,加急定制了一波桌面大鼠标垫! 很大…很爽、很实用 这批鼠标垫市面上必然买不到,从供应商给我的设计图来看, B 格还是不错的(拿来垫桌子也很实用)。不卖关子,从事 Java 工作的见者有份,

CSAPP Data Lab

CSAPP 的第一个 Lab,对应知识点为书中的第 2 章(信息的表示与处理),要求使用受限制的运算符和表达式实现一些位操作。主要分为两个部分:整数部分和浮点数部分。其中整数部分限制较多,比较偏重技巧性,部分题个人认为很有难度。而浮点数部分则比较基础,主要考察对 IEEE 754 标准的熟悉程度,代码较长,但思路相对简单。 bitXor 思路 使用德-摩根定律进行推导,推导过程如下: 代

嵌入式:Arm v7-M指令集架构中的字节序(大小端)

相关阅读 嵌入式https://blog.csdn.net/weixin_45791458/category_12768532.html?spm=1001.2014.3001.5482         本文来源于博主无意之中的一个发现,虽然之前就知道Cortex-M3默认为小端模式,但是偶然发现了一些出乎意料的情况。         首先来看看Arm v7-M指令集架构中相关的定义。

RISC-V汇编实现矩阵阶乘

1) 源代码  long long fact(long long n) {if (n < 1) return 1;else return (n*fact(n - 1));} 2) 汇编代码  fact:addi sp, sp, -16 // adjust stack for 2 itemssd x1, 8(sp) // save the return add

ARM指令集——状态寄存器访问指令

ARM中有两条指令用于状态寄存器和通用寄存器之间传送数据。程序不能直接修改CPSR中的T控制位直接将程序状态切换到Thumb状态,必须通过BX等指令完成程序状态的切换。通常修改状态寄存器时通过“读取-修改-写回”的操作序列来实现的。状态寄存器访问指令包括以下两条指令: MRS 状态寄存器到通用寄存器的传送指令MSR 通用寄存器到状态寄存器的传送指令 下面一一介绍之: 1、MRS