CSAPP 处理器体系结构

news/2025/11/24 0:10:52/文章来源:https://www.cnblogs.com/cqbzlzh/p/19261938

处理器体系结构

CISC 与 RISC 指令集

CISC:复杂指令计算机 (如x86-64)
RISC:精简指令计算机 (如RISC-V)

RISC 相较于CISC指令数量少得多,编码长度固定,寻址没有变址寄存器和伸缩因子,对机器级程序实现细节可见......
RISC指令集设计简约,可使用流水线优化;CISC指令集使用指令数更少 两者各有优势
比较新的CISC也采用了流水线结构,实际效率与RISC相近,同时RISC在嵌入器方面表现更为出色

Y86-64

本章使用了一种简化的\(x86-64\)指令集,同时结合了部分\(RISC\)的特点,称为\(Y86-64\)指令集

程序可见状态

程序可见状态对使用汇编语言的程序员和产生机器级代码的编译器都可见
\(Y86-64\)中,程序可见状态包括15个寄存器,条件码,PC,虚拟内存,以及状态码

可用指令

\(Y86-64\)只包含8字节整数操作,指令格式与\(x86-64\) AT&T格式类似
mov 指令需要两个前缀,为以下之一:i立即数,r寄存器,m内存 这两个前缀分别为源和目的
操作指令addq subq andq xorq只能对寄存器进行操作,无法操作内存
跳转指令和条件传送指令与\(x86-64\)保持一致
call ret pushq popq\(x86-64\)保持一致
halt指令停止处理器的运行,并将状态码设置为HLT

指令的编码

我们以指令 rmmov %rsp,0x123456789abcd(%rdx)为例,rmmov的指令编码为40,%rsp %rdx的编码为42,最后的偏移量字节序列为\(000123456789abcd\),注意是小端法,按照字节间反序得到偏移量编码为\(cdab896745230100\),进而得到整条指令编码为\(4042cdab896745230100\)

Y86-64指令异常

Y86-64程序

伪指令:以.开头的指令为汇编器伪指令,使得汇编器调整地址,将汇编代码或者数据存放在指定的地址

实例:

补充:pushq %rsp 压入的是栈指针的初始值还是修改过的值取决于处理器的型号,而 popq %rsp固定是将栈指针设置为栈顶的值

好了,你已经会\(Y86-64\)的基本语法了,现在开始做lab编写\(Y86-64\)程序吧(

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/974375.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

AI协助 一周打造「七巧板益智小游戏」:从零高效开发教学工具

AI协助 一周打造「七巧板益智小游戏」:从零高效开发教学工具 一个“教学痛点”引发的开发冲动。本文讲述如何利用Copilot在一周内快速开发一个面向小学数学教学的七巧板益智小游戏,涵盖需求分析、技术选型、核心算法…

【MCP系列】用 MCP 扩展 AI 编辑器:从零开发一个自己的MCP服务

【MCP系列】用 MCP 扩展 AI 编辑器:从零开发一个自己的MCP服务本文MCP协议,手把手教你构建一个自己的MCP Server,在AI编辑器实现通过自然语言指令调用自己写的工具脚本。随着 AI 编辑器(如 Copilot、通义灵码、Tra…

VB6版MP3文件信息编辑器 - 开源研究系列文章 - 个人小作品

VB6版MP3文件信息编辑器 - 开源研究系列文章 - 个人小作品Posted on 2025-11-24 00:00 lzhdim 阅读(0) 评论(0) 收藏 举报 这次整理VB6编写的MP3文件的ID3v1信息编辑器。该应用比较简单,主要是对于ID3v1信…

手把手教你用 React + Zustand 打造 Windows 风格可拖拽,缩放,多窗口 Modal 组件

手把手教你用 React + Zustand 打造 Windows 风格可拖拽,缩放,多窗口 Modal 组件记录仿Windows风格的可拖拽、缩放、多窗口 Modal 组件的实现还在为每个弹窗写重复的拖拽、缩放、Z轴代码而烦恼吗?还在复制粘贴 onMo…

ImGui Learn Data Day 1

ImGui Learn data Day 1ImGui::Begin("Hello Gui");static float u = 0;static bool an = 0;if (ImGui::CollapsingHeader("Settings"))//展开条{//如果点击就展开或者关闭ImGui::SliderFloat(&qu…

OI 笑传 #34

夜の東側今天是 bct Day4,赛时 \(75+30+40+0=115\),rk 54。 T1 挂分原因仍未知,直接原因是没有大样例,然后是用数据结构维护的贪心,比较恶心。 赛时比较爆炸,T1 连想带调用了 3h,导致比较简单的 T2,T3,T4 没有…

【MCP系列】介绍一个我自己开发的MCP工具:MCP Shipit

【MCP系列】介绍一个我自己开发的MCP工具:MCP Shipit介绍一个我自己开发的MCP工具:MCP Shipit,欢迎来github提issue,star!在AI编辑器日益普及的今天,我们可以通过自定义工具来扩展AI的能力。本文将介绍如何从零开…

第34天(简单题中等题 数据结构)

打卡第三十四天 1道简单题+两道中等题题目:思路:哈希表+遍历 代码: class Solution{ public:int maxSum(vector<int>& nums){unordered_map<int,int> hash;int ans = -1;for(int x: nums){int maxd…

3. Gin RESTful API 开发

3. Gin RESTful API 开发 3.1 RESTful API简介 3.1.1 RESTful API 定义REST(Representational State Transfer,表现层状态转换)是一种软件架风格、设计风格,而不是一种标准。它提供了一组设计原则和约束条件,主要用…

说课逐字稿2

尊敬的各位评委老师: 大家好!今天我说课的题目是《健康数据小哨兵——循环选择嵌套》。 面对海量健康数据,如何从“人工低效核对”跨越到“智能精准监测”?这是本课要解决的核心问题。我将从分析策略、教学过程、教…

Codeforces Round 1066 (Div. 1 + Div. 2) 做题记录

Dashboard - Codeforces Round 1066 (Div. 1 + Div. 2) - Codeforces Problem - A - Codeforces 题意: 平衡数组定义为:若 \(x\) 存在,则存在 \(x\) 个 \(x\),求给定数组至少删去多少数变成平衡数组。 题解: 若 \…

2025.11.23总结

一些思考和建议 1. 现状分析:从“稀缺”到“饱和”的本质 过去的“高工价”源于互联网和移动互联网的爆炸性增长,对代码的渴求是海量的。那时,一个能实现功能的程序员就是稀缺资源。 现在的“不稀缺”,准确地说,是…

字符串常见操作

字符串常见操作查找: find 字符是否包含在字符串中,在就返回这个子字符串开始位置的下标,否则就返回-1 count 返回出现的次数,返回某个子字符串在整个字符串中出现的次数,没有就返回0 index 和index一样但是会报…

广州比较靠谱的留学中介

广州比较靠谱的留学中介一、广州留学中介怎么选?这些疑问你有吗?作为从事12年国际教育规划师,我经常被广州的学生和家长问到:广州的留学中介哪家更靠谱?申请英国研究生,广州哪家中介成功率更高?广州本地口碑最好…

SpringBoot 2.x - 3.x 踩坑记录

一、现状:JDK17 SpringBoot 2.6.8 Gradle 7.6二、目标:JDK17 gradle 8.10.2 SpringBoot 3.5.6 无漏洞版本三、问题: 1. import javax.*报错 原因:SpringBoot 2.x 使用 javax 规范,SpringBoot 3.x 使用 jakarta 规…

广州比较好的留学机构

广州比较好的留学机构一、广州留学机构怎么选?这五个问题你考虑过吗?作为一位拥有十年经验的国际教育规划师,我经常被广州的学生和家长问及如何挑选留学中介。在选择过程中,许多人会陷入纠结:广州留学机构哪家更靠…

AtCoder Beginner Contest 433 题解

只写了 A-F。A - Happy Birthday! 4 开局就绷不住了,晚上脑子有点不清醒直接暴力 check 到 \(10^7\) 没想到直接过了。代码。但是正解还是要推式子的,设 \(k\) 年后为答案,则有 \(X + k = Z(Y + k)\),移项后得到 \…

使用 Lua 语言识别英文数字验证码

接下来我将使用 Lua 语言来实现类似的功能。Lua 是一种轻量级的嵌入式脚本语言,广泛应用于游戏开发、嵌入式系统等领域。 一、安装与配置安装 Lua 更多内容访问ttocr.com或联系1436423940 可以从 Lua 官网 下载并安装…