getfromcode后端开发 会员免费

网易云课堂-李忠-X64架构汇编语言和操作系统基础

这门课主要解决什么问题 在高级语言和常规应用开发中,处理器如何进入某种执行模式、栈从哪里开始、异常发生后由谁接管,往往被编译器和操作系统封装掉了。真正阅读启动代码、分析崩溃现场或理解内核入口时,开发者需要把指令、寄存器、内存地址、段描述符、栈布局和控制流放在同一张图里观察。这套围绕 X64 架构、汇

单课价¥29.90新品 上架
会员价 会员免费开通会员,全站课程按额度无限下载套餐详情
8 人关注 更新于 2026-10-07 永久有效
发货

网盘链接 · 支付成功后自动发货

保障

永久有效 · 链接失效免费补发

客服

每日 9:00-21:00 在线客服 联系客服

购买方式开通会员 · 全站免费下单课购买 · 仅本课

支付成功后自动显示网盘下载链接;链接失效可联系客服免费补链,永久有效。

正版保障 极速发货 售后无忧

这门课主要解决什么问题

在高级语言和常规应用开发中,处理器如何进入某种执行模式、栈从哪里开始、异常发生后由谁接管,往往被编译器和操作系统封装掉了。真正阅读启动代码、分析崩溃现场或理解内核入口时,开发者需要把指令、寄存器、内存地址、段描述符、栈布局和控制流放在同一张图里观察。这套围绕 X64 架构、汇编语言与操作系统基础展开的资料,解决的正是这些概念彼此割裂、只能记结论却无法追踪执行过程的问题。

资料的主线不是单纯罗列汇编指令,而是从进入 IA-32e 的 64 位执行环境开始,逐步建立代码段、栈区以及内核入口的基本条件,再延伸到通用的中断和异常处理。通过中断门、异常服务过程、中断控制器初始化以及首次输出等实践节点,可以看到处理器如何从当前指令转移到内核处理过程,也能理解启动阶段为什么必须先准备运行环境。它适合当作底层机制的对照材料,而不是只看一遍就结束的理论讲义。

适合什么基础,建议先看哪几块

有基本编程经验、接触过 C 语言指针和结构体、知道二进制与十六进制表示的读者,通常可以直接进入学习。最好再了解编译、链接、内存地址和函数调用的大致概念,但不要求已经写过操作系统。即使之前只使用过高级语言,只要愿意按照寄存器变化和栈内容逐步记录,也能从汇编指令与系统初始化的关系入手。对后端开发者而言,这些内容可以补上应用代码与操作系统之间的边界知识。

建议先看三块内容。第一块是从保护模式环境进入 64 位模式的过程,重点关注模式切换前后的寄存器、全局描述符和栈,而不是先背诵指令格式。第二块是内核代码如何划分入口、通用处理过程以及具体服务例程,借此理解一次异常或中断经过哪些层次。第三块再看中断门和中断控制器的配合,最后用 64 位模式下的首次输出作为检查点,确认前面的环境确实已经建立。这样的顺序比按零散知识点跳读更容易定位问题。

技术主线:从执行环境连接到中断处理

学习 X64 架构时,不能只把它理解为寄存器变宽或地址变长。进入 64 位模式意味着处理器采用了一套新的执行约束,代码段、栈、地址计算和控制转移都需要满足相应条件。阅读资料时,可以为每个关键步骤建立一张表,记录执行前后的寄存器值、当前栈顶、下一条指令位置以及处理器为什么能够继续取指。这样做能把抽象的模式切换还原成连续的机器状态变化。

中断和异常部分则适合从“谁发起、如何进入、谁负责处理”三个问题切入。异常通常由当前执行过程触发,硬件中断来自外部控制逻辑,两者虽然都需要进入处理例程,却不应混为一谈。中断门负责规定处理器如何转入入口,通用处理过程负责保存和整理现场,而中断控制器负责协助管理外部请求。把这几个角色分开后,再观察通用入口、服务例程和控制器初始化之间的关系,才能理解为什么内核不会为每一种情况都重复编写一套完全独立的入口代码。

资料怎么配合练习,而不是停留在观看

每看完一个知识点,建议立即产出一个小型工程记录。模式切换部分可以画出执行阶段和控制流,整理描述符、栈和关键寄存器的作用;中断部分可以画出从事件发生到处理例程返回的路径,并标明现场保存、入口跳转和具体处理的位置。遇到一段汇编代码时,不要只抄注释,应同时写出“这条指令改变了什么、下一步依赖什么、如果栈不正确会出现什么现象”。这些记录会比单纯重复播放更容易形成可复用的排查方法。

练习时应优先追求最小可运行结果,再逐层增加内容。可以先复现能够进入 64 位执行环境并输出一条信息的最小流程,然后加入通用的异常或中断入口,最后再观察中断控制器相关配置对控制流的影响。每次只改动一个变量,并保留修改前后的寄存器、栈和输出结果,避免多个改动同时发生后无法判断原因。若资料中的示例代码可以直接使用,就先逐段验证;若只有讲解内容,则将关键片段整理成自己的最小实验,不要一开始就试图拼出大型工程。

  • 先画执行流程,再对照每条关键指令的寄存器和栈变化。
  • 先验证模式、栈和输出,再验证中断入口及异常处理。
  • 遇到失败时,优先检查当前执行模式、栈位置、入口地址和现场保存顺序。

学完后能够独立完成什么

完成这条主线后,读者应能在已有构建和运行条件的情况下,独立搭建一个小型的 64 位启动与内核初始化实验:准备必要的全局描述信息和栈,进入 64 位执行状态,组织清晰的内核入口,并输出可观察的运行结果。进一步按照资料中的处理思路,可以设计通用的异常或中断入口,区分处理器异常与外部中断,理解中断门和中断控制器在其中各自承担的职责。

这并不等于已经完成一个可用于生产环境的操作系统,但足以让读者开始独立阅读底层代码、定位启动阶段故障,并判断问题更可能出在模式切换、栈准备、入口跳转还是处理器现场保存。后续面对新的内核代码时,也可以沿用同一套方法:先确认处理器状态,再确认内存和栈,再确认控制流入口,最后检查具体服务逻辑。对于后端开发者,这种能力尤其适合用来理解系统边界、分析低层崩溃信息,并把应用运行现象与机器实际执行过程联系起来。

网易云课堂-李忠-X64架构汇编语言和操作系统基础

深入理解X64架构与操作系统原理

编辑点评

系统深入,理论与实践结合,适合对底层架构感兴趣的学员。

⭐ 编辑推荐

本课程从X64架构出发,深入讲解操作系统基础,涵盖中断处理、内存管理等多方面内容。

✨ 课程亮点

✦X64架构深入解析
✦操作系统原理讲解
✦理论与实践结合

课程目录

{5}--进入IA-32e的64位模式执行17 集
  • [5.12]--创建通用中断处理过程的中断门.mp4 [20.6 MB]
  • [5.10]--通用异常服务例程的工作过程.mp4 [24.8 MB]
  • [5.15]--初始化8259中断控制器.mp4 [17.0 MB]
  • [5.9]--内核的文件组织与通用的中断和异常处理策略.mp4 [22.5 MB]
  • [5.16]--打印64位模式下的第一条信息.mp4 [22.1 MB]
  • [5.4]--启用GDT和栈区的高端线性地址.mp4 [22.7 MB]
  • [5.11]--加载有效地址指令LEA.mp4 [18.2 MB]
  • [5.3]--准备让内核工作在线性地址空间的高端.mp4 [15.7 MB]
  • [5.13]--在IDT内安装前32个与异常有关的中断门.mp4 [23.1 MB]
  • [5.6]--让处理器转到内核程序对应的高端位置继续执行.mp4 [15.5 MB]
  • [5.1]--在IA-32e的兼容模式下显示文本信息.mp4 [26.7 MB]
  • [5.17]--在虚拟机上观察内核的运行情况.mp4 [12.7 MB]
  • [5.8]--IA-32e模式下的中断处理过程.mp4 [17.2 MB]
  • [5.14]--在IDT内安装剩余的中断门并加载IDTR.mp4 [18.1 MB]
  • [5.7]--IA-32e模式下的中断门和陷阱门.mp4 [15.3 MB]
  • [5.2]--通过远返回方式进入64位模式的内核.mp4 [35.8 MB]
  • [5.5]--使用RIP相对寻址将内核的起始线性地址改为高端地址.mp4 [19.2 MB]
{2}--X64基本架构和执行环境35 集
  • [2.33]--64位模式的RIP相对寻址方式.mp4 [15.6 MB]
  • [2.6]--第一次阶段性巩固和测试.mp4 [47.6 MB]
  • [2.3]--物理地址、有效地址和线性地址.mp4 [13.0 MB]
  • [2.30]--X64架构下的标志寄存器和指令指针寄存器.mp4 [29.5 MB]
  • [2.34]--64位模式下的指令变化情况.mp4 [18.9 MB]
  • [2.31]--X64架构下传统模式的寻址方式.mp4 [14.4 MB]
  • [2.28]--X64架构下的LDT描述符和LDTR.mp4 [11.1 MB]
  • [2.35]--IA-32e模式下的中断和异常处理概述.mp4 [16.0 MB]
  • [2.8]--X64架构新增加的通用寄存器.mp4 [9.4 MB]
  • [2.4]--X64架构的工作模式.mp4 [11.7 MB]
  • [2.5]--IA-32e模式及其子模式.mp4 [9.9 MB]
  • [2.11]--X64架构下传统模式的内存访问.mp4 [8.4 MB]
  • [2.7]--X64架构对通用寄存器的扩展.mp4 [18.0 MB]
  • [2.9]--X64架构的通用寄存器访问规则.mp4 [20.7 MB]
  • [2.10]--X86处理器的物理地址空间.mp4 [19.8 MB]
  • [2.25]--X64架构下的系统表和系统描述符.mp4 [12.9 MB]
  • [2.2]--X64架构的由来.mp4 [16.5 MB]
  • [2.16]--传统模式下的32位PAE-4KB分页技术.mp4 [46.8 MB]
  • [2.24]--X64架构下的4级和5级分页简介.mp4 [16.9 MB]
  • [2.29]--X64架构下的TSS描述符和TR.mp4 [10.1 MB]
  • [2.32]--X64架构下IA-32e模式的寻址方式.mp4 [23.4 MB]
  • [2.19]--扩高地址的特点和处理器检查.mp4 [15.7 MB]
  • [2.18]--X64架构的线性地址空间.mp4 [18.7 MB]
  • [2.13]--传统模式下如何利用超过4GB的物理内存.mp4 [11.7 MB]
  • [2.1]--有关本章内容学习的重要提示.mp4 [20.4 MB]
  • [2.15]--传统模式下的32位PAE分页技术.mp4 [9.2 MB]
  • [2.26]--X64架构下的GDTR.mp4 [18.3 MB]
  • [2.20]--X64架构下IA-32e模式的内存访问.mp4 [15.9 MB]
  • [2.21]--X64架构的段寄存器.mp4 [13.8 MB]
  • [2.23]--X64架构下的数据段描述符.mp4 [9.5 MB]
  • [2.14]--传统模式下的32位4MB分页技术.mp4 [34.4 MB]
  • [2.17]--传统模式下的32位PAE-2MB分页技术.mp4 [17.1 MB]
  • [2.12]--传统模式下的32位4KB分页技术.mp4 [9.3 MB]
  • [2.22]--X64架构下的代码段描述符.mp4 [14.1 MB]
  • [2.27]--X64架构下的IDTR.mp4 [19.4 MB]
{1}--内容提要及课程相关说明1 集
  • [1.1]--内容提要及课程相关说明.mp4 [10.4 MB]
{6}--单处理器环境下的多任务管理和调度51 集
  • [6.47]--将64位二进制数转换为十进制字符串.mp4 [15.0 MB]
  • [6.41]--执行任务切换.mp4 [22.9 MB]
  • [6.45]--用户任务的结构和功能.mp4 [23.0 MB]
  • [6.43]--通过系统调用获取当前时间.mp4 [17.2 MB]
  • [6.42]--通过系统调用获取屏幕上可用的显示行坐标.mp4 [20.3 MB]
  • [6.39]--快速系统调用的返回和指令的REX前缀.mp4 [19.2 MB]
  • [6.8]--快速系统调用时的RFLAGS和栈切换.mp4 [13.1 MB]
  • [6.44]--在外壳任务中显示当前时间.mp4 [11.5 MB]
  • [6.9]--动态内存分配和内核空间的分配策略.mp4 [15.0 MB]
  • [6.46]--当前任务标识的获取和用户程序例程库的介绍.mp4 [20.4 MB]
  • [6.48]--在每一轮相加中将结果和加数转换为字符串.mp4 [23.1 MB]
  • [6.19]--安装与指定线性地址对应的页目录项、页表项和页面.mp4 [20.4 MB]
  • [6.28]--切换到新任务的地址空间并清空4级头表的前半部分.mp4 [15.3 MB]
  • [6.29]--为新任务分配0特权级使用的栈空间.mp4 [22.1 MB]
  • [6.10]--内核可用线性地址的获取和更新.mp4 [23.8 MB]
  • [6.2]--快速系统调用概述.mp4 [12.7 MB]
  • [6.4]--准备在GDT中安装新的描述符.mp4 [24.7 MB]
  • [6.14]--页面分配与页映射位串.mp4 [17.3 MB]
  • [6.37]--系统调用指令SYSCALL和SYSRET.mp4 [24.8 MB]
  • [6.36]--以中断返回的方式进入外壳任务的局部空间执行.mp4 [22.2 MB]
  • [6.38]--根据功能号计算内核例程的线性地址.mp4 [28.0 MB]
  • [6.18]--分配页目录表并安装与线性地址对应的页目录指针项.mp4 [15.0 MB]
  • [6.6]--为快速系统调用准备段选择子.mp4 [13.8 MB]
  • [6.30]--为新任务分配3特权级使用的栈空间.mp4 [22.8 MB]
  • [6.34]--将新任务的PCB添加到PCB链表中.mp4 [16.0 MB]
  • [6.50]--用户任务的终止.mp4 [32.1 MB]
  • [6.40]--准备在时钟中断的处理中执行任务切换.mp4 [31.4 MB]
  • [6.12]--计算本次内存分配涉及的线性地址范围.mp4 [14.1 MB]
  • [6.21]--创建和安装64位的TSS描述符并加载任务寄存器TR.mp4 [27.2 MB]
  • [6.35]--64位的任务状态段TSS和中断栈表IST.mp4 [22.3 MB]
  • [6.5]--为快速系统调用安装段描述符.mp4 [25.6 MB]
  • [6.3]--型号专属寄存器IA32_STAR.mp4 [25.5 MB]
  • [6.49]--字符串的连接和显示.mp4 [18.2 MB]
  • [6.17]--检查与指定线性地址对应的页目录指针项是否存在.mp4 [11.6 MB]
  • [6.26]--将指定的线性地址映射到指定的物理页.mp4 [27.2 MB]
  • [6.23]--准备创建外壳任务.mp4 [20.9 MB]
  • [6.7]--设置快速系统调用的入口点.mp4 [14.3 MB]
  • [6.51]--任务切换频次对用户体验的影响.mp4 [40.4 MB]
  • [6.27]--复制当前活动4级头表的内容给新任务的4级头表.mp4 [16.1 MB]
  • [6.25]--为新任务创建4级头表.mp4 [23.9 MB]
  • [6.1]--单处理器环境下的多任务概述.mp4 [24.4 MB]
  • [6.22]--实时时钟中断的安装和系统外壳任务简介.mp4 [29.9 MB]
  • [6.15]--页映射位串的定义和空闲页的查找.mp4 [23.7 MB]
  • [6.24]--为新任务创建任务控制块PCB.mp4 [18.1 MB]
  • [6.13]--获取与指定线性地址对应的4级头表项的线性地址.mp4 [27.1 MB]
  • [6.31]--从硬盘上加载用户程序.mp4 [19.5 MB]
  • [6.20]--64位LDT和TSS描述符的格式.mp4 [15.6 MB]
  • [6.16]--获取与指定线性地址对应的页目录指针项的线性地址.mp4 [26.8 MB]
  • [6.11]--立即数在64位模式下的长度限制.mp4 [13.6 MB]
  • [6.32]--生成任务标识.mp4 [19.8 MB]
  • [6.33]--双向PCB链表概述.mp4 [18.5 MB]
{4}--为进入IA-32e模式准备4级分页20 集
  • [4.7]--创建指向4级头表自身的4级头表项.mp4 [14.2 MB]
  • [4.3]--4级头表项的格式.mp4 [21.1 MB]
  • [4.5]--页目录项和页表项的格式.mp4 [10.0 MB]
  • [4.1]--4级分页的结构和原理.mp4 [16.6 MB]
  • [4.9]--在4级分页中使用2MB的物理页.mp4 [9.5 MB]
  • [4.10]--创建与低端2MB物理内存对应的4级头表项和页目录指针表.mp4 [18.9 MB]
  • [4.4]--页目录指针项的格式.mp4 [17.4 MB]
  • [4.20]--型号专属寄存器IA32_EFER的设置和分页的开启.mp4 [25.4 MB]
  • [4.16]--在内核的4级头表内安装254个表项并清空相关的页目录指针表.mp4 [22.4 MB]
  • [4.18]--控制寄存器CR3的内容格式.mp4 [10.6 MB]
  • [4.13]--将物理内存低端的2MB映射到线性地址空间的高端.mp4 [20.2 MB]
  • [4.12]--创建与低端2MB物理内存对应的页目录项.mp4 [10.2 MB]
  • [4.8]--准备映射物理内存的低端2MB空间.mp4 [33.2 MB]
  • [4.2]--2MB和1GB页面的4级分页方式.mp4 [12.0 MB]
  • [4.17]--进程上下文标识PCID.mp4 [20.8 MB]
  • [4.14]--为多任务环境准备必要的4级头表项.mp4 [14.1 MB]
  • [4.6]--4级头表的创建和初始化.mp4 [12.9 MB]
  • [4.15]--为内核的4级分页系统预分配254个页目录指针表.mp4 [15.6 MB]
  • [4.19]--设置控制寄存器CR3并开启物理地址扩展功能.mp4 [9.8 MB]
  • [4.11]--创建与低端2MB物理内存对应的页目录指针项和页目录表.mp4 [15.0 MB]
{3}--准备进入IA-32e模式24 集
  • [3.3]--主引导程序和NASM的文件包含功能.mp4 [25.4 MB]
  • [3.10]--调用BIOS例程显示字符串.mp4 [20.1 MB]
  • [3.2]--本章的目标及源程序的组织.mp4 [25.6 MB]
  • [3.13]--转入内核加载器执行.mp4 [80.4 MB]
  • [3.23]--读取内核程序的第一个扇区.mp4 [20.3 MB]
  • [3.20]--进入保护模式.mp4 [46.4 MB]
  • [3.12]--准备读取内核加载器程序的剩余部分.mp4 [20.7 MB]
  • [3.14]--检测处理器是否支持IA-32e模式.mp4 [24.9 MB]
  • [3.1]--进入IA-32e模式的方法.mp4 [10.5 MB]
  • [3.9]--通过数据段访问栈中的数据结构.mp4 [8.9 MB]
  • [3.11]--读磁盘失败后的错误处理.mp4 [24.8 MB]
  • [3.19]--为进入保护模式准备全局描述符表.mp4 [17.9 MB]
  • [3.5]--编写主引导程序的一般性建议.mp4 [10.7 MB]
  • [3.8]--内核加载器程序的有效标志和长度.mp4 [14.4 MB]
  • [3.4]--如何避免文件被重复包含.mp4 [23.4 MB]
  • [3.21]--在保护模式下显示字符串.mp4 [82.6 MB]
  • [3.15]--浣嶆祴璇曟寚浠T.mp4 [35.0 MB]
  • [3.18]--显示处理器的地址尺寸信息.mp4 [142.9 MB]
  • [3.16]--获取和显示处理器商标信息.mp4 [25.6 MB]
  • [3.24]--将内核程序完全加载到内存中.mp4 [26.7 MB]
  • [3.6]--用BIOS硬盘扩展读加载内核加载器.mp4 [16.5 MB]
  • [3.22]--有关内核程序及其如何加载的说明.mp4 [21.6 MB]
  • [3.7]--在程序中使用NASM运算符和表达式.mp4 [16.2 MB]
  • [3.17]--获取和保存处理器的地址尺寸数据.mp4 [18.9 MB]

适合人群

  • 计算机专业学生
  • 系统架构师
  • 底层开发人员

🎯 学习收获

  • 掌握X64架构原理
  • 理解操作系统工作原理
  • 提升系统开发能力

🎉 祝您学习愉快!