ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

CSAPP第4章 处理器体系结构

2021-02-16 21:03:04  阅读:372  来源: 互联网

标签:CSAPP 字节 Y86 指令 64 处理器 寄存器 rsp 体系结构


第4章 处理器体系结构(持续更新)

这一章CMU 15-213没有相应的课程,老教授直接略过,从第五章开讲。个人觉得这一章可以参考清华大学的计算机组成原理课(刘卫东教授),刘教授讲的还是蛮清晰的,主要是讲的MIPS指令系统,大同小异吧。
不知道本章要花多久,毕竟大几十页,要想快速看完还要吃透,难度不小,心急吃不成热豆腐。慢慢来,看了下课程15-213后面的就没有第三章这么详细了,基本一节课一章内容,最多不超过两节。还是稳扎稳打,理解总结梳理好再进行。
写博文,一是为了锻炼自己的总结能力;二是督促自己,记录每天的学习内容,做好笔记;三是纲举目张,毕竟长时间不看就会望,有这个在,就有一个纲在,能回忆好好想想,再不济回头翻书也好有个对应关系,知道哪是哪。

指令集体系结构:一个处理器支持的指令和指令的字节级编码。
本章使用的指令集为Y86-64,基本上是x86-64指令集的子集。
指令集的重要性质是字节编码必须有唯一的解释。

4.1Y86-64指令集体系结构
1.程序员可见状态
能提供的寄存器,15个程序寄存器,3个一位条件码,程序计数器PC(存放当前正在执行指令的地址),DMEM内存 ,Stat状态码。
在这里插入图片描述
2.Y86-64指令
数据传送指令4个:irmovq、rrmovq、mrmovq、rmmovq。它们的第一个字母表示源的类型(立即数、寄存器或内存),第二个字母表示了目的类型(寄存器或内存)。
整数操作指令4个:addq、subq、andq和xorq。
跳转指令7个:jmp、jle、jl、je、jne、jge、jg。
条件传送指令6个:cmovle、cmovl、cmove、cmovne、cmovge和cmovq。
出入栈指令2个:pushq和popq
停止指令:halt
3.指令编码
在这里插入图片描述
左侧为汇编码,右侧为字节级编码。指令有的只有一个字节长,有的有操作数,指令编码更长。如上图,指令编码后可能会有寄存器指示符字节,指定一个或两个寄存器,寄存器字段称为rA和rB。个别指令后跟8字节的常数字。最大长度为10字节。
每条指令的第一个字节表明指令的类型。该字节可分两步分,高4位为代码部分,低4位是功能部分。代码值为0~0xB
在这里插入图片描述

寄存器标识符范围:0-0xE,不访问寄存器,用ID值0xF表示。
在这里插入图片描述
采用绝对寻址。
4.异常
当遇到异常,处理器会调用一个异常处理程序,处理遇到的某种类型异常。
涉及到状态码Stat值,含义解释如下图
在这里插入图片描述
5.Y86-64程序
主要是对比了以下x86-64与Y86-64在对同样的C代码进行汇编时的一些区别。
6.Y86-64指令的详情
pushq和popq指令需要特别注意
pushq %rsp和popq %rsp
pushq指令会把栈指针减8,并且将一个寄存器值写入到内存中。有两种不同的约定:1是压入%rsp的原始值,2是压入减去8的%rsp的值。
popq指令可以将%rsp置为从内存中读取出的值,也可以置为加了增量后的栈指针。

标签:CSAPP,字节,Y86,指令,64,处理器,寄存器,rsp,体系结构
来源: https://blog.csdn.net/u014788231/article/details/113825039

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有