68| 1
|
[视频] X64架构汇编语言和操作系统基础 |
![]() |
回复本帖可获得 10 断点币奖励! 每人限 1 次 |
目录 │ ├─x64asm-20020822 │ └─x64asm │ │ asm8086.xml │ │ dd.exe │ │ fixvhdw64.exe │ │ fixvhdw64.ini │ │ HexView.exe │ │ LEARN.vhd │ │ LEECHUNG.vhd │ │ nasmide2.ini │ │ Nasmide64.exe │ │ usbd_mbr.bin │ │ │ ├─c02 │ │ c02_core.asm │ │ c02_ldr.asm │ │ c02_ldr.bin │ │ c02_ldr.lst │ │ c02_mbr.asm │ │ c02_mbr.bin │ │ c02_mbr.lst │ │ │ ├─c06 │ │ c06_core.asm │ │ c06_core.bin │ │ c06_core.lst │ │ c06_shell.asm │ │ c06_shell.bin │ │ c06_shell.lst │ │ c06_userapp.asm │ │ c06_userapp.bin │ │ c06_userapp.lst │ │ │ ├─c07 │ │ c07_core.asm │ │ c07_core.bin │ │ c07_core.lst │ │ c07_ldr.asm │ │ c07_ldr.bin │ │ c07_ldr.lst │ │ │ ├─c07 - 副本 │ │ c07_core.asm │ │ c07_core.bin │ │ c07_core.lst │ │ c07_ldr.asm │ │ c07_ldr.bin │ │ c07_ldr.lst │ │ │ ├─c07 - 副本 (2) │ │ c07_core.asm │ │ c07_core.bin │ │ c07_core.lst │ │ c07_ldr.asm │ │ c07_ldr.bin │ │ c07_ldr.lst │ │ │ ├─c08 │ │ c08_core.asm │ │ c08_core.bin │ │ c08_core.lst │ │ c08_shell.asm │ │ c08_shell.bin │ │ c08_shell.lst │ │ c08_userapp.asm │ │ c08_userapp.bin │ │ c08_userapp.lst │ │ │ └─common │ core_utils64.bin │ core_utils64.lst │ core_utils64.wid │ core_utils64_mp.bin │ core_utils64_mp.lst │ core_utils64_mp.wid │ global_defs.bin │ global_defs.lst │ global_defs.wid │ user_static64.lib │ ├─{01}--内容提要及课程相关说明 │ [1.1]--内容提要及课程相关说明.mp4 │ ├─{02}--X64基本架构和执行环境 │ [2.10]--X86处理器的物理地址空间.mp4 │ [2.11]--X64架构下传统模式的内存访问.mp4 │ [2.12]--传统模式下的32位4KB分页技术.mp4 │ [2.13]--传统模式下如何利用超过4GB的物理内存.mp4 │ [2.14]--传统模式下的32位4MB分页技术.mp4 │ [2.15]--传统模式下的32位PAE分页技术.mp4 │ [2.16]--传统模式下的32位PAE-4KB分页技术.mp4 │ [2.17]--传统模式下的32位PAE-2MB分页技术.mp4 │ [2.18]--X64架构的线性地址空间.mp4 │ [2.19]--扩高地址的特点和处理器检查.mp4 │ [2.1]--有关本章内容学习的重要提示.mp4 │ [2.20]--X64架构下IA-32e模式的内存访问.mp4 │ [2.21]--X64架构的段寄存器.mp4 │ [2.22]--X64架构下的代码段描述符.mp4 │ [2.23]--X64架构下的数据段描述符.mp4 │ [2.24]--X64架构下的4级和5级分页简介.mp4 │ [2.25]--X64架构下的系统表和系统描述符.mp4 │ [2.26]--X64架构下的GDTR.mp4 │ [2.27]--X64架构下的IDTR.mp4 │ [2.28]--X64架构下的LDT描述符和LDTR.mp4 │ [2.29]--X64架构下的TSS描述符和TR.mp4 │ [2.2]--X64架构的由来.mp4 │ [2.30]--X64架构下的标志寄存器和指令指针寄存器.mp4 │ [2.31]--X64架构下传统模式的寻址方式.mp4 │ [2.32]--X64架构下IA-32e模式的寻址方式.mp4 │ [2.33]--64位模式的RIP相对寻址方式.mp4 │ [2.34]--64位模式下的指令变化情况.mp4 │ [2.35]--IA-32e模式下的中断和异常处理概述.mp4 │ [2.3]--物理地址、有效地址和线性地址.mp4 │ [2.4]--X64架构的工作模式.mp4 │ [2.5]--IA-32e模式及其子模式.mp4 │ [2.6]--第一次阶段性巩固和测试.mp4 │ [2.7]--X64架构对通用寄存器的扩展.mp4 │ [2.8]--X64架构新增加的通用寄存器.mp4 │ [2.9]--X64架构的通用寄存器访问规则.mp4 │ ├─{03}--准备进入IA-32e模式 │ [3.10]--调用BIOS例程显示字符串.mp4 │ [3.11]--读磁盘失败后的错误处理.mp4 │ [3.12]--准备读取内核加载器程序的剩余部分.mp4 │ [3.13]--转入内核加载器执行.mp4 │ [3.14]--检测处理器是否支持IA-32e模式.mp4 │ [3.15]--位测试指令BT.mp4 │ [3.16]--获取和显示处理器商标信息.mp4 │ [3.17]--获取和保存处理器的地址尺寸数据.mp4 │ [3.18]--显示处理器的地址尺寸信息.mp4 │ [3.19]--为进入保护模式准备全局描述符表.mp4 │ [3.1]--进入IA-32e模式的方法.mp4 │ [3.20]--进入保护模式.mp4 │ [3.21]--在保护模式下显示字符串.mp4 │ [3.22]--有关内核程序及其如何加载的说明.mp4 │ [3.23]--读取内核程序的第一个扇区.mp4 │ [3.24]--将内核程序完全加载到内存中.mp4 │ [3.2]--本章的目标及源程序的组织.mp4 │ [3.3]--主引导程序和NASM的文件包含功能.mp4 │ [3.4]--如何避免文件被重复包含.mp4 │ [3.5]--编写主引导程序的一般性建议.mp4 │ [3.6]--用BIOS硬盘扩展读加载内核加载器.mp4 │ [3.7]--在程序中使用NASM运算符和表达式.mp4 │ [3.8]--内核加载器程序的有效标志和长度.mp4 │ [3.9]--通过数据段访问栈中的数据结构.mp4 │ ├─{04}--为进入IA-32e模式准备4级分页 │ [4.10]--创建与低端2MB物理内存对应的4级头表项和页目录指针表.mp4 │ [4.11]--创建与低端2MB物理内存对应的页目录指针项和页目录表.mp4 │ [4.12]--创建与低端2MB物理内存对应的页目录项.mp4 │ [4.13]--将物理内存低端的2MB映射到线性地址空间的高端.mp4 │ [4.14]--为多任务环境准备必要的4级头表项.mp4 │ [4.15]--为内核的4级分页系统预分配254个页目录指针表.mp4 │ [4.16]--在内核的4级头表内安装254个表项并清空相关的页目录指针表.mp4 │ [4.17]--进程上下文标识PCID.mp4 │ [4.18]--控制寄存器CR3的内容格式.mp4 │ [4.19]--设置控制寄存器CR3并开启物理地址扩展功能.mp4 │ [4.1]--4级分页的结构和原理.mp4 │ [4.20]--型号专属寄存器IA32_EFER的设置和分页的开启.mp4 │ [4.2]--2MB和1GB页面的4级分页方式.mp4 │ [4.3]--4级头表项的格式.mp4 │ [4.4]--页目录指针项的格式.mp4 │ [4.5]--页目录项和页表项的格式.mp4 │ [4.6]--4级头表的创建和初始化.mp4 │ [4.7]--创建指向4级头表自身的4级头表项.mp4 │ [4.8]--准备映射物理内存的低端2MB空间.mp4 │ [4.9]--在4级分页中使用2MB的物理页.mp4 │ ├─{05}--进入IA-32e的64位模式执行 │ [5.10]--通用异常服务例程的工作过程.mp4 │ [5.11]--加载有效地址指令LEA.mp4 │ [5.12]--创建通用中断处理过程的中断门.mp4 │ [5.13]--在IDT内安装前32个与异常有关的中断门.mp4 │ [5.14]--在IDT内安装剩余的中断门并加载IDTR.mp4 │ [5.15]--初始化8259中断控制器.mp4 │ [5.16]--打印64位模式下的第一条信息.mp4 │ [5.17]--在虚拟机上观察内核的运行情况.mp4 │ [5.1]--在IA-32e的兼容模式下显示文本信息.mp4 │ [5.2]--通过远返回方式进入64位模式的内核.mp4 │ [5.3]--准备让内核工作在线性地址空间的高端.mp4 │ [5.4]--启用GDT和栈区的高端线性地址.mp4 │ [5.5]--使用RIP相对寻址将内核的起始线性地址改为高端地址.mp4 │ [5.6]--让处理器转到内核程序对应的高端位置继续执行.mp4 │ [5.7]--IA-32e模式下的中断门和陷阱门.mp4 │ [5.8]--IA-32e模式下的中断处理过程.mp4 │ [5.9]--内核的文件组织与通用的中断和异常处理策略.mp4 │ ├─{06}--单处理器环境下的多任务管理和调度 │ [6.10]--内核可用线性地址的获取和更新.mp4 │ [6.11]--立即数在64位模式下的长度限制.mp4 │ [6.12]--计算本次内存分配涉及的线性地址范围.mp4 │ [6.13]--获取与指定线性地址对应的4级头表项的线性地址.mp4 │ [6.14]--页面分配与页映射位串.mp4 │ [6.15]--页映射位串的定义和空闲页的查找.mp4 │ [6.16]--获取与指定线性地址对应的页目录指针项的线性地址.mp4 │ [6.17]--检查与指定线性地址对应的页目录指针项是否存在.mp4 │ [6.18]--分配页目录表并安装与线性地址对应的页目录指针项.mp4 │ [6.19]--安装与指定线性地址对应的页目录项、页表项和页面.mp4 │ [6.1]--单处理器环境下的多任务概述.mp4 │ [6.20]--64位LDT和TSS描述符的格式.mp4 │ [6.21]--创建和安装64位的TSS描述符并加载任务寄存器TR.mp4 │ [6.22]--实时时钟中断的安装和系统外壳任务简介.mp4 │ [6.23]--准备创建外壳任务.mp4 │ [6.24]--为新任务创建任务控制块PCB.mp4 │ [6.25]--为新任务创建4级头表.mp4 │ [6.26]--将指定的线性地址映射到指定的物理页.mp4 │ [6.27]--复制当前活动4级头表的内容给新任务的4级头表.mp4 │ [6.28]--切换到新任务的地址空间并清空4级头表的前半部分.mp4 │ [6.29]--为新任务分配0特权级使用的栈空间.mp4 │ [6.2]--快速系统调用概述.mp4 │ [6.30]--为新任务分配3特权级使用的栈空间.mp4 │ [6.31]--从硬盘上加载用户程序.mp4 │ [6.32]--生成任务标识.mp4 │ [6.33]--双向PCB链表概述.mp4 │ [6.34]--将新任务的PCB添加到PCB链表中.mp4 │ [6.35]--64位的任务状态段TSS和中断栈表IST.mp4 │ [6.36]--以中断返回的方式进入外壳任务的局部空间执行.mp4 │ [6.37]--系统调用指令SYSCALL和SYSRET.mp4 │ [6.38]--根据功能号计算内核例程的线性地址.mp4 │ [6.39]--快速系统调用的返回和指令的REX前缀.mp4 │ [6.3]--型号专属寄存器IA32_STAR.mp4 │ [6.40]--准备在时钟中断的处理中执行任务切换.mp4 │ [6.41]--执行任务切换.mp4 │ [6.42]--通过系统调用获取屏幕上可用的显示行坐标.mp4 │ [6.43]--通过系统调用获取当前时间.mp4 │ [6.44]--在外壳任务中显示当前时间.mp4 │ [6.45]--用户任务的结构和功能.mp4 │ [6.46]--当前任务标识的获取和用户程序例程库的介绍.mp4 │ [6.47]--将64位二进制数转换为十进制字符串.mp4 │ [6.48]--在每一轮相加中将结果和加数转换为字符串.mp4 │ [6.49]--字符串的连接和显示.mp4 │ [6.4]--准备在GDT中安装新的描述符.mp4 │ [6.50]--用户任务的终止.mp4 │ [6.51]--任务切换频次对用户体验的影响.mp4 │ [6.5]--为快速系统调用安装段描述符.mp4 │ [6.6]--为快速系统调用准备段选择子.mp4 │ [6.7]--设置快速系统调用的入口点.mp4 │ [6.8]--快速系统调用时的RFLAGS和栈切换.mp4 │ [6.9]--动态内存分配和内核空间的分配策略.mp4 │ ├─{07}--多处理器和APIC的初始化 │ [7.10]--多处理器的初始化过程和MP规范.mp4 │ [7.11]--高级的配置和电源接口(ACPI)规范.mp4 │ [7.12]--本章代码清单.mp4 │ [7.13]--ACPI的数据结构和表.mp4 │ [7.14]--E820功能调用和内存地址范围结构.mp4 │ [7.15]--查询和保存物理地址映射数据.mp4 │ [7.16]--获取ACPI申领的物理内存地址范围.mp4 │ [7.17]--准备映射ACPI申领的内存.mp4 │ [7.18]--映射ACPI申领的内存到当前分页系统.mp4 │ [7.19]--根系统描述指针结构.mp4 │ [7.1]--多处理器环境概述.mp4 │ [7.20]--搜索根系统描述指针结构.mp4 │ [7.21]--系统描述表的层次结构和表头格式.mp4 │ [7.22]--扩展的系统描述表XSDT.mp4 │ [7.23]--通过XSDT搜索多APIC描述表MADT.mp4 │ [7.24]--根系统描述表RSDT.mp4 │ [7.25]--通过RSDT搜索多APIC描述表MADT.mp4 │ [7.26]--多APIC描述表MADT的格式.mp4 │ [7.27]--准备遍历中断控制器结构列表.mp4 │ [7.28]--从中断控制器结构内提取处理器和APIC信息.mp4 │ [7.29]--映射APIC地址.mp4 │ [7.2]--同时多线程和INTEL超线程技术.mp4 │ [7.30]--LocalAPIC定时器.mp4 │ [7.31]--LocalAPIC定时器的精度.mp4 │ [7.32]--APIC定时器的本地向量表寄存器及其设置.mp4 │ [7.33]--设置CMOSRTC以测量LocalAPIC定时器.mp4 │ [7.34]--测量LocalAPIC定时器在1ms内经历的时钟周期数.mp4 │ [7.35]--多处理器的中断机制之虚拟线模式.mp4 │ [7.36]--中断输入引脚LINT0的本地向量表寄存器.mp4 │ [7.37]--用LINT0的本地向量表寄存器屏蔽8259中断.mp4 │ [7.38]--I/OAPIC概述.mp4 │ [7.39]--I/OAPIC的I/O重定向表寄存器.mp4 │ [7.3]--高级可编程中断控制器APIC概述.mp4 │ [7.40]--用I/OAPIC投递的中断实施任务切换.mp4 │ [7.41]--使用8253/8254定时器中断切换任务.mp4 │ [7.42]--使用LocalAPIC定时器中断切换任务.mp4 │ [7.43]--逻辑目标模式下的中断目标判别机制.mp4 │ [7.44]--APIC中断的优先级及其相关的寄存器.mp4 │ [7.45]--APIC中断的接受机制.mp4 │ [7.46]--最低优先级模式的中断处理.mp4 │ [7.4]--中断引脚、中断类型和中断源.mp4 │ [7.5]--本地中断源和本地向量表.mp4 │ [7.6]--APIC的工作模式和APICID.mp4 │ [7.7]--组成LocalAPICID的处理器拓扑.mp4 │ [7.8]--LocalAPIC的地址映射.mp4 │ [7.9]--I/OAPIC的地址映射.mp4 │ ├─{08}--多处理器环境下的多任务管理和调度 │ [8.10]--本章对内核工具文件的修改.mp4 │ [8.11]--开始执行内核的初始化.mp4 │ [8.12]--处理器专属存储区(每CPU数据区).mp4 │ [8.13]--为自举处理器BSP分配专属存储区.mp4 │ [8.14]--用型号专属寄存器IA32_KERNEL_GS_BASE指向处理器.mp4 │ [8.15]--多处理器系统的初始化协议算法.mp4 │ [8.16]--本章的多处理器多任务调度方案.mp4 │ [8.17]--中断命令寄存器ICR.mp4 │ [8.18]--本章的AP初始化代码简介.mp4 │ [8.19]--将AP初始化代码传送到指定位置.mp4 │ [8.1]--多处理器环境下的多任务管理和调度.mp4 │ [8.1]--本章的目标和代码清单.mp4 │ [8.20]--向所有应用处理器广播SIPI消息.mp4 │ [8.21]--应用处理器AP的初始化:进入保护模式.mp4 │ [8.22]--应用处理器AP的初始化:进入64位模式.mp4 │ [8.23]--应用处理器AP的初始化:创建数据结构.mp4 │ [8.24]--应用处理器AP的初始化:初始化之后的处理器架构状态.mp4 │ [8.25]--应用处理器AP的初始化:用SWAPGS指令访问专属存储区.mp4 │ [8.26]--应用处理器AP的初始化:开启LocalAPIC并进入停机待命状态.mp4 │ [8.27]--自举处理器BSP:等待所有应用处理器完成初始化.mp4 │ [8.28]--自举处理器BSP:创建系统外壳任务并为其指定时间片.mp4 │ [8.29]--交换并相加指令XADD和无锁操作.mp4 │ [8.2]--高速缓存.mp4 │ [8.30]--自举处理器BSP:广播新任务认领消息并进入预定状态.mp4 │ [8.31]--新任务认领中断的处理过程.mp4 │ [8.32]--在任务链表中查找就绪任务.mp4 │ [8.33]--用比较并交换指令CMPXCHG以无锁方式操作链表节点.mp4 │ [8.34]--执行新任务:为新任务指定时间片.mp4 │ [8.35]--执行新任务:恢复任务的状态并开始执行.mp4 │ [8.36]--时间片到期中断的处理过程.mp4 │ [8.37]--处理器专属存储区的必要性.mp4 │ [8.38]--外壳任务的执行流程.mp4 │ [8.39]--用户任务的执行流程.mp4 │ [8.3]--单处理器环境下的数据竞争.mp4 │ [8.40]--任务的终止.mp4 │ [8.4]--多处理器环境下的数据竞争.mp4 │ [8.5]--原子操作.mp4 │ [8.6]--锁和自旋锁.mp4 │ [8.7]--分支预测和PAUSE指令.mp4 │ [8.8]--宏定义和宏扩展.mp4 │ [8.9]--互斥锁的一般原理.mp4 │ ├─{09}--多处理器环境下的多线程管理和调度 │ [9.10]--创建新线程:创建线程控制块TCB和栈.mp4 │ [9.11]--创建新线程:例程返回和结束线程的区别.mp4 │ [9.12]--创建新线程:如何用RET指令结束线程.mp4 │ [9.13]--创建新线程:在栈中构造结束线程的栈帧.mp4 │ [9.14]--创建新线程:将TCB添加到当前任务的TCB链表.mp4 │ [9.15]--线程的执行:动态内存分配.mp4 │ [9.16]--线程的执行:在栈中保存所有缓冲区的线性地址.mp4 │ [9.17]--线程的执行:字符串的生成、连接和打印.mp4 │ [9.18]--线程的结束和任务的终止.mp4 │ [9.1]--任务(进程)和线程.mp4 │ [9.2]--任务控制块PCB和线程控制块TCB.mp4 │ [9.3]--任务及其主线程的创建.mp4 │ [9.4]--新线程认领中断的处理过程.mp4 │ [9.5]--查找就绪状态的线程.mp4 │ [9.6]--让处理器执行指定的线程.mp4 │ [9.7]--时间片到期中断的处理过程.mp4 │ [9.8]--系统外壳任务及其主线程的执行.mp4 │ [9.9]--准备创建新的线程.mp4 │ └─{10}--数据竞争和互斥锁 [10.1]--本章内容提要.mp4 [10.2]--线程休眠及其实现机制.mp4 [10.3]--执行线程休眠的系统调用.mp4
购买主题
本主题需向作者支付 60 断点币 才能浏览
| |