|
* ?0 ]) s2 k- n) C4 n6 M# Y% u, B/ G8 O$ v& G9 Q1 Y3 M1 S2 e& h5 P% \* j+ S
3 c j3 @3 z/ y6 _: J+ v( X x
8 x2 B! \ r, N! _4 i6 M李忠汇编3 G" y# Z1 F: N7 D
资源目录# Z( s" L( ~! G" C( j' Y% [9 z6 P
[size=0.288]├──{1}--内容提要及课程相关说明 ' W5 }* A c+ R/ p7 w: E+ r
| └──[1.1]--内容提要及课程相关说明.mp4 10.44M
5 b' Y5 K$ g5 w# X├──{2}--X64基本架构和执行环境 1 R! y. \6 I1 J# I
| ├──[2.10]--X86处理器的物理地址空间.mp4 19.79M0 f: h! W8 L! Q, I# S; ?
| ├──[2.11]--X64架构下传统模式的内存访问.mp4 8.35M
1 d" M' G0 i) {" [' f| ├──[2.12]--传统模式下的32位4KB分页技术.mp4 9.28M0 J+ E% D* `+ J8 A1 u
| ├──[2.13]--传统模式下如何利用超过4GB的物理内存.mp4 11.70M# J% W* _& L' t. r( S- p4 L
| ├──[2.14]--传统模式下的32位4MB分页技术.mp4 34.40M
" h9 Y- v: |* f$ V| ├──[2.15]--传统模式下的32位PAE分页技术.mp4 9.18M3 G$ K. H3 a% ^' X c* j
| ├──[2.16]--传统模式下的32位PAE-4KB分页技术.mp4 46.83M
# p! d+ g6 |2 L4 S| ├──[2.17]--传统模式下的32位PAE-2MB分页技术.mp4 17.15M
( V# B0 Y5 q' m/ o$ t# c/ J| ├──[2.18]--X64架构的线性地址空间.mp4 18.70M3 S! ]: Z: N4 j4 d6 V. E
| ├──[2.19]--扩高地址的特点和处理器检查.mp4 15.73M
$ y% @ {. Q+ A' d: @2 Y2 Q: F, ~| ├──[2.1]--有关本章内容学习的重要提示.mp4 20.35M
5 S3 q$ M' e4 L2 F9 \% I% I+ t| ├──[2.20]--X64架构下IA-32e模式的内存访问.mp4 15.89M! M. p, d! e# }! g) J0 O
| ├──[2.21]--X64架构的段寄存器.mp4 13.84M
% L5 o5 s, x) `' r+ v4 w* F| ├──[2.22]--X64架构下的代码段描述符.mp4 14.07M0 D" Z. Y! B- F& Z+ k% }, e
| ├──[2.23]--X64架构下的数据段描述符.mp4 9.52M% n; p6 t, v+ ~4 r
| ├──[2.24]--X64架构下的4级和5级分页简介.mp4 16.92M* H7 s& h1 ?9 m. m! }
| ├──[2.25]--X64架构下的系统表和系统描述符.mp4 12.91M/ X; w" d: X, A
| ├──[2.26]--X64架构下的GDTR.mp4 18.29M
/ t; |* c* h2 N, ]| ├──[2.27]--X64架构下的IDTR.mp4 19.36M
5 q) j x9 q2 O9 ^; S4 {! q| ├──[2.28]--X64架构下的LDT描述符和LDTR.mp4 11.14M
, G, a+ a* E& Y0 W8 _| ├──[2.29]--X64架构下的TSS描述符和TR.mp4 10.13M
! |$ P4 w( l2 g+ P| ├──[2.2]--X64架构的由来.mp4 16.53M' ?) h" G H2 a5 s8 J. j8 G
| ├──[2.30]--X64架构下的标志寄存器和指令指针寄存器.mp4 29.54M5 U# K6 G7 }) a% D: f0 d
| ├──[2.31]--X64架构下传统模式的寻址方式.mp4 14.41M
7 g0 q9 [8 H* Q5 w: l& q1 q| ├──[2.32]--X64架构下IA-32e模式的寻址方式.mp4 23.38M1 j/ E v+ ]4 F( a
| ├──[2.33]--64位模式的RIP相对寻址方式.mp4 15.61M
6 U8 D. C t1 v' a* _| ├──[2.34]--64位模式下的指令变化情况.mp4 18.89M/ ], s6 t* d: e
| ├──[2.35]--IA-32e模式下的中断和异常处理概述.mp4 16.04M
, M4 V K! K9 O' W3 h7 W| ├──[2.3]--物理地址、有效地址和线性地址.mp4 12.99M2 G1 L9 ^* ^2 E3 Q, V
| ├──[2.4]--X64架构的工作模式.mp4 11.67M
9 Q# w ?3 }3 ~, M9 O| ├──[2.5]--IA-32e模式及其子模式.mp4 9.91M
' o$ G, A# l7 I2 h1 e S| ├──[2.6]--第一次阶段性巩固和测试.mp4 47.60M& ^# f7 V% T" _
| ├──[2.7]--X64架构对通用寄存器的扩展.mp4 17.97M' M' f7 f g9 @8 x( X, w! k8 ^
| ├──[2.8]--X64架构新增加的通用寄存器.mp4 9.38M
% |- [! E' Z! S$ V7 c; m| └──[2.9]--X64架构的通用寄存器访问规则.mp4 20.69M
# `$ x: N& [& p1 e$ C- i├──{3}--准备进入IA-32e模式
4 k! O, n9 X' f( S| ├──[3.10]--调用BIOS例程显示字符串.mp4 20.12M9 _- T* @) N, d4 C+ A9 d6 @2 w
| ├──[3.11]--读磁盘失败后的错误处理.mp4 24.81M, ]4 q6 k+ d4 I+ `- \% b d7 o/ r
| ├──[3.12]--准备读取内核加载器程序的剩余部分.mp4 20.66M
g. s9 t8 I4 J0 b' p& ?| ├──[3.13]--转入内核加载器执行.mp4 80.36M
8 r3 T7 y( b% N; `4 S1 E| ├──[3.14]--检测处理器是否支持IA-32e模式.mp4 24.89M% I8 Z: C* V. C2 Y0 @8 b
| ├──[3.15]--位测试指令BT.mp4 35.02M
) h% T2 y! u$ [6 l| ├──[3.16]--获取和显示处理器商标信息.mp4 25.63M7 ?1 M4 O7 _) k
| ├──[3.17]--获取和保存处理器的地址尺寸数据.mp4 18.93M* ]+ ~5 c! [8 b8 h
| ├──[3.18]--显示处理器的地址尺寸信息.mp4 142.90M" W8 i7 _& J; P3 S9 L/ I- D+ ?
| ├──[3.19]--为进入保护模式准备全局描述符表.mp4 17.90M% e/ V( L" y$ C! B- a
| ├──[3.1]--进入IA-32e模式的方法.mp4 10.48M* y8 u \! |( X% A7 s
| ├──[3.20]--进入保护模式.mp4 46.41M
9 s7 K8 Q) O P6 G+ [0 ^| ├──[3.21]--在保护模式下显示字符串.mp4 82.57M
$ o b6 x2 w2 ?: ]9 G2 T: V9 }| ├──[3.22]--有关内核程序及其如何加载的说明.mp4 21.62M
[3 a6 j" E- w; _. {| ├──[3.23]--读取内核程序的第一个扇区.mp4 20.29M
9 W) |* B6 m9 H& }9 H1 Y; A| ├──[3.24]--将内核程序完全加载到内存中.mp4 26.75M
9 `4 ]7 G: o/ c6 d| ├──[3.2]--本章的目标及源程序的组织.mp4 25.58M4 o5 d& w6 M* ~6 N/ P+ R& ~
| ├──[3.3]--主引导程序和NASM的文件包含功能.mp4 25.38M
?$ b# Z! ]9 F3 ^' \+ Y* g. `| ├──[3.4]--如何避免文件被重复包含.mp4 23.41M
d: G) a" ]8 b! R7 x| ├──[3.5]--编写主引导程序的一般性建议.mp4 10.71M" J+ f; q: R# h& q- ^4 U
| ├──[3.6]--用BIOS硬盘扩展读加载内核加载器.mp4 16.55M. g6 u! W, u- c4 L6 ~& h- U
| ├──[3.7]--在程序中使用NASM运算符和表达式.mp4 16.23M' t. A$ F" O9 N9 {, a/ Q h. U
| ├──[3.8]--内核加载器程序的有效标志和长度.mp4 14.36M2 _1 j; \ K6 Y$ L; z6 I
| └──[3.9]--通过数据段访问栈中的数据结构.mp4 8.94M+ k$ O9 M, B: P* t& d( G. ]
├──{4}--为进入IA-32e模式准备4级分页
; K0 k/ z+ h8 k6 O" d" l' v. Z| ├──[4.10]--创建与低端2MB物理内存对应的4级头表项和页目录指针表.mp4 18.94M
6 s4 Z! I4 X' ~, \| ├──[4.11]--创建与低端2MB物理内存对应的页目录指针项和页目录表.mp4 15.04M
; H- G1 _) z D7 n, q$ g| ├──[4.12]--创建与低端2MB物理内存对应的页目录项.mp4 10.18M
. N4 c3 z2 e0 w3 [; Z" L| ├──[4.13]--将物理内存低端的2MB映射到线性地址空间的高端.mp4 20.25M
1 A$ Y; Z, z9 M7 v) G. B6 l| ├──[4.14]--为多任务环境准备必要的4级头表项.mp4 14.07M" X4 D0 [7 |: m
| ├──[4.15]--为内核的4级分页系统预分配254个页目录指针表.mp4 15.65M
; ^4 Q( M p6 D! ~% r| ├──[4.16]--在内核的4级头表内安装254个表项并清空相关的页目录指针表.mp4 22.36M5 Z6 A2 j& V- s7 V- o
| ├──[4.17]--进程上下文标识PCID.mp4 20.80M
4 k# {1 I- Y1 ]( ~) i| ├──[4.18]--控制寄存器CR3的内容格式.mp4 10.59M
- S) I6 N: `% F| ├──[4.19]--设置控制寄存器CR3并开启物理地址扩展功能.mp4 9.77M
; I" Y' n3 O7 P4 I3 `1 n+ I$ \3 ]| ├──[4.1]--4级分页的结构和原理.mp4 16.55M1 {; y P7 i0 V6 D( N
| ├──[4.20]--型号专属寄存器IA32_EFER的设置和分页的开启.mp4 25.42M3 d3 k5 [4 A" t
| ├──[4.2]--2MB和1GB页面的4级分页方式.mp4 12.03M
& F/ ^/ {& r$ b| ├──[4.3]--4级头表项的格式.mp4 21.10M
3 G d( h! j# s% ]" c| ├──[4.4]--页目录指针项的格式.mp4 17.43M
I* F( G/ Y' ~' q8 q7 ^| ├──[4.5]--页目录项和页表项的格式.mp4 10.00M
7 E- A4 Z8 K& j0 K8 Z$ v| ├──[4.6]--4级头表的创建和初始化.mp4 12.94M
, O. Y4 Q' y* p5 [| ├──[4.7]--创建指向4级头表自身的4级头表项.mp4 14.20M
+ H3 [/ D: b$ {* H3 ~- [| ├──[4.8]--准备映射物理内存的低端2MB空间.mp4 33.21M7 @* E" u! ?' M3 O: ~7 j5 |' u4 {
| └──[4.9]--在4级分页中使用2MB的物理页.mp4 9.54M
) C. @# E! X; O" c3 b├──{5}--进入IA-32e的64位模式执行
3 H) U; `4 S5 v- e8 A4 x- I| ├──[5.10]--通用异常服务例程的工作过程.mp4 24.81M
" D( s3 ^, W6 C4 G5 h6 g| ├──[5.11]--加载有效地址指令LEA.mp4 18.25M
e1 |! @' C M2 h, |- || ├──[5.12]--创建通用中断处理过程的中断门.mp4 20.55M& `1 i$ A% D* ?5 N) c) Z* R3 |; F
| ├──[5.13]--在IDT内安装前32个与异常有关的中断门.mp4 23.06M
! B, x) Z: Q: R7 j% r| ├──[5.14]--在IDT内安装剩余的中断门并加载IDTR.mp4 18.09M: a# n( q" D5 K" A C
| ├──[5.15]--初始化8259中断控制器.mp4 17.01M: t0 x1 g7 S) E
| ├──[5.16]--打印64位模式下的第一条信息.mp4 22.09M
8 J0 I5 T* |7 ^| ├──[5.17]--在虚拟机上观察内核的运行情况.mp4 12.70M
5 e, K# @! k0 n| ├──[5.1]--在IA-32e的兼容模式下显示文本信息.mp4 26.72M/ R- u9 U2 t% O& s& |
| ├──[5.2]--通过远返回方式进入64位模式的内核.mp4 35.80M7 s' v4 i4 N" H( w! N- g0 x6 N7 i" E
| ├──[5.3]--准备让内核工作在线性地址空间的高端.mp4 15.67M( }' v8 P" o/ a8 J
| ├──[5.4]--启用GDT和栈区的高端线性地址.mp4 22.69M+ l' K8 [9 x3 n+ Z! m5 y
| ├──[5.5]--使用RIP相对寻址将内核的起始线性地址改为高端地址.mp4 19.16M
5 w; Z5 z; K6 c$ k% S. _| ├──[5.6]--让处理器转到内核程序对应的高端位置继续执行.mp4 15.54M7 y' P/ T" W4 e2 N6 [
| ├──[5.7]--IA-32e模式下的中断门和陷阱门.mp4 15.31M+ O$ C- K" T* Q
| ├──[5.8]--IA-32e模式下的中断处理过程.mp4 17.22M
3 G8 l+ B) E6 M6 Z| └──[5.9]--内核的文件组织与通用的中断和异常处理策略.mp4 22.55M, I1 @* A7 m. g' t# e; d
└──{6}--单处理器环境下的多任务管理和调度 & a' g: z' e7 x) w6 Y* I
| ├──[6.10]--内核可用线性地址的获取和更新.mp4 23.81M( x- w& q+ j+ h U+ _
| ├──[6.11]--立即数在64位模式下的长度限制.mp4 13.63M8 q. k7 H9 `, ]1 ]4 I S" z
| ├──[6.12]--计算本次内存分配涉及的线性地址范围.mp4 14.09M
/ A g6 k7 z+ z+ I8 {+ ]- k* _" M| ├──[6.13]--获取与指定线性地址对应的4级头表项的线性地址.mp4 27.09M
3 |1 i1 }- S5 u. H. d$ d" h! H| ├──[6.14]--页面分配与页映射位串.mp4 17.28M
) }7 I7 P% `$ Q, D% |# `| ├──[6.15]--页映射位串的定义和空闲页的查找.mp4 23.66M" I% v" s- Y9 J. `+ I2 l* b6 o' \+ X, y
| ├──[6.16]--获取与指定线性地址对应的页目录指针项的线性地址.mp4 26.83M
* t/ c R% `# V0 a9 {| ├──[6.17]--检查与指定线性地址对应的页目录指针项是否存在.mp4 11.64M. N# o4 Q7 P) k, f) p
| ├──[6.18]--分配页目录表并安装与线性地址对应的页目录指针项.mp4 15.03M
" `5 S' P5 N- w$ Z7 i4 O7 n| ├──[6.19]--安装与指定线性地址对应的页目录项、页表项和页面.mp4 20.36M1 l9 J/ [3 P g. @8 M- E0 E* L% S
| ├──[6.1]--单处理器环境下的多任务概述.mp4 24.38M
) k% u$ }4 a$ h- O y| ├──[6.20]--64位LDT和TSS描述符的格式.mp4 15.63M7 T l8 z! j+ ^! F7 K
| ├──[6.21]--创建和安装64位的TSS描述符并加载任务寄存器TR.mp4 27.18M
# g3 \! q, `( j/ d1 O| ├──[6.22]--实时时钟中断的安装和系统外壳任务简介.mp4 29.93M/ p# `+ C9 v& ^- t- d7 Y
| ├──[6.23]--准备创建外壳任务.mp4 20.94M4 q/ x& o- r% S, c# M0 y
| ├──[6.24]--为新任务创建任务控制块PCB.mp4 18.12M
3 @& ?+ O: r1 e; ?6 n- |! k9 \| ├──[6.25]--为新任务创建4级头表.mp4 23.92M
" l' Q$ T* X. d5 h! I- Q- J| ├──[6.26]--将指定的线性地址映射到指定的物理页.mp4 27.19M, n+ O4 J6 W: D
| ├──[6.27]--复制当前活动4级头表的内容给新任务的4级头表.mp4 16.13M3 `9 `5 P' U0 f6 H0 l' g7 _
| ├──[6.28]--切换到新任务的地址空间并清空4级头表的前半部分.mp4 15.35M: `; e0 [; l: z: ]
| ├──[6.29]--为新任务分配0特权级使用的栈空间.mp4 22.05M
+ j4 |1 Y+ ?2 }, i| ├──[6.2]--快速系统调用概述.mp4 12.74M
! d8 P+ V, `$ K& b! O* a- S+ v) y& J3 n| ├──[6.30]--为新任务分配3特权级使用的栈空间.mp4 22.76M0 d( p$ s1 l. [
| ├──[6.31]--从硬盘上加载用户程序.mp4 19.54M- v' n& _- M6 F$ `
| ├──[6.32]--生成任务标识.mp4 19.76M% z/ Z' J. \; j
| ├──[6.33]--双向PCB链表概述.mp4 18.52M* B* [' z2 R0 @' |$ R, J8 D: p
| ├──[6.34]--将新任务的PCB添加到PCB链表中.mp4 15.96M' \( U/ t5 k7 `0 w
| ├──[6.35]--64位的任务状态段TSS和中断栈表IST.mp4 22.33M$ j: p" \2 i8 _, B5 }: R
| ├──[6.36]--以中断返回的方式进入外壳任务的局部空间执行.mp4 22.22M
1 T5 i1 \# l" l$ A4 o8 l+ E| ├──[6.37]--系统调用指令SYSCALL和SYSRET.mp4 24.77M! B3 J& ^" s0 y) i7 a2 ?/ f
| ├──[6.38]--根据功能号计算内核例程的线性地址.mp4 27.96M) t4 ?* v7 d# x4 z( N' u/ B
| ├──[6.39]--快速系统调用的返回和指令的REX前缀.mp4 19.22M
) R- C* R! T4 W, h+ D8 u' m8 E| ├──[6.3]--型号专属寄存器IA32_STAR.mp4 25.51M
3 R( m- D- n; H8 s# w: o/ o| ├──[6.40]--准备在时钟中断的处理中执行任务切换.mp4 31.38M* B. m) v. W) z; ?3 K( d
| ├──[6.41]--执行任务切换.mp4 22.94M
: q4 F/ K/ n& ], w: j9 h| ├──[6.42]--通过系统调用获取屏幕上可用的显示行坐标.mp4 20.27M+ \$ X4 H' s: y
| ├──[6.43]--通过系统调用获取当前时间.mp4 17.18M" e% T3 \: F( c5 d' x5 q, t
| ├──[6.44]--在外壳任务中显示当前时间.mp4 11.53M5 }0 w! X7 s9 T$ w- B, d
| ├──[6.45]--用户任务的结构和功能.mp4 23.01M+ m0 I' u2 x9 M0 f
| ├──[6.46]--当前任务标识的获取和用户程序例程库的介绍.mp4 20.43M) g, D, Z) e n/ ^8 F& a) }
| ├──[6.47]--将64位二进制数转换为十进制字符串.mp4 15.01M
: H$ g( M5 \( d6 e/ |7 e k| ├──[6.48]--在每一轮相加中将结果和加数转换为字符串.mp4 23.08M
( h3 L2 L% Q; E1 `* h| ├──[6.49]--字符串的连接和显示.mp4 18.22M
4 l( H" x" z2 X# _$ x| ├──[6.4]--准备在GDT中安装新的描述符.mp4 24.68M
+ |& z, m- l* l6 }! p| ├──[6.50]--用户任务的终止.mp4 32.08M
5 T- w% e2 J5 [( C& t/ ]+ L0 T| ├──[6.51]--任务切换频次对用户体验的影响.mp4 40.36M/ e9 G/ ~7 S2 } ~- [ a7 N( ^
| ├──[6.5]--为快速系统调用安装段描述符.mp4 25.62M
( K* q& H& g8 P5 Y| ├──[6.6]--为快速系统调用准备段选择子.mp4 13.84M6 E( v! Q% L/ g j+ ?
| ├──[6.7]--设置快速系统调用的入口点.mp4 14.27M
9 z# H5 Q U8 W& E4 Q| ├──[6.8]--快速系统调用时的RFLAGS和栈切换.mp4 13.13M
+ L; l1 `6 i6 m% J| └──[6.9]--动态内存分配和内核空间的分配策略.mp4 14.98M
; b! e/ {- @- z6 C3 m% R5 C* K. h/ V- }0 O4 w6 k" L/ r
* t3 Y: K: D+ @6 E2 Y; {+ M
4 ?1 A9 u! d9 O4 `' @, X& Y
8 L6 C/ D2 A) d/ |/ }1 ~6 p6 C
资源下载地址和密码(百度云盘): [/hide] 百度网盘信息回帖可见
- d3 t- G9 U% U' w
4 ~9 V7 X& P1 H# N4 E3 w3 _% D' l/ j8 i- a5 x s4 U$ n- `
1 x2 b5 s8 a* z/ P! J7 q% s' `6 e |
本资源由Java自学网收集整理【www.javazx.com】 |
|