当前位置: 首页 > news >正文

CSAPP 处理器体系结构

处理器体系结构

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.jsqmd.com/news/48805/

相关文章:

  • AI协助 一周打造「七巧板益智小游戏」:从零高效开发教学工具
  • 【MCP系列】用 MCP 扩展 AI 编辑器:从零开发一个自己的MCP服务
  • VB6版MP3文件信息编辑器 - 开源研究系列文章 - 个人小作品
  • 手把手教你用 React + Zustand 打造 Windows 风格可拖拽,缩放,多窗口 Modal 组件
  • ImGui Learn Data Day 1
  • OI 笑传 #34
  • 【MCP系列】介绍一个我自己开发的MCP工具:MCP Shipit
  • 第34天(简单题中等题 数据结构)
  • 3. Gin RESTful API 开发
  • 说课逐字稿2
  • 251123头疼的一天
  • Codeforces Round 1066 (Div. 1 + Div. 2) 做题记录
  • 2025.11.23总结
  • 字符串常见操作
  • 广州比较靠谱的留学中介
  • SpringBoot 2.x - 3.x 踩坑记录
  • 广州比较好的留学机构
  • 配置文件路径
  • AtCoder Beginner Contest 433 题解
  • 使用 Lua 语言识别英文数字验证码
  • 广州10大出国留学机构
  • 北京留学机构,谁知道哪家比较好
  • 北京留学读研中介机构推荐
  • 北京留学机构排行榜
  • 北京口碑最好的十大留学机构
  • 北京口碑最好的留学机构
  • 用 Kotlin 实现简单的文本处理程序
  • 北京口碑比较好的留学中介
  • 北京出国留学的机构哪家好
  • 北京出国留学的机构哪个好