|
& O% I* u3 d0 [# s% H7 m9 M% g% [" g0 ^5 n$ G
5 C' V( k# c, j) ]! ]. d6 e6 E! d9 p, @# E
李忠汇编0 E K) u& |# l R4 D
资源目录4 N' f! w( b Z; e) G
[size=0.288]├──{1}--内容提要及课程相关说明
( U) E/ b! o5 O& c! G| └──[1.1]--内容提要及课程相关说明.mp4 10.44M
/ A9 E3 X& [* D$ O' i& `├──{2}--X64基本架构和执行环境
* k& i2 q! L# w! n5 s| ├──[2.10]--X86处理器的物理地址空间.mp4 19.79M2 _6 v- p) O+ C/ v! J
| ├──[2.11]--X64架构下传统模式的内存访问.mp4 8.35M
+ e8 d4 W7 I( Q| ├──[2.12]--传统模式下的32位4KB分页技术.mp4 9.28M- S: z# [. k5 b( ?/ [ ^
| ├──[2.13]--传统模式下如何利用超过4GB的物理内存.mp4 11.70M
& m3 T! z, B3 O| ├──[2.14]--传统模式下的32位4MB分页技术.mp4 34.40M
2 h( p T* }) z% Y# ^' w. j| ├──[2.15]--传统模式下的32位PAE分页技术.mp4 9.18M- s3 }- _$ g0 n* A* | O
| ├──[2.16]--传统模式下的32位PAE-4KB分页技术.mp4 46.83M
4 d4 {9 F0 }: L" j$ G2 V| ├──[2.17]--传统模式下的32位PAE-2MB分页技术.mp4 17.15M
) H6 o" h- \6 D: c7 _' N l" }| ├──[2.18]--X64架构的线性地址空间.mp4 18.70M, ?" |8 f. T4 K' ]1 _
| ├──[2.19]--扩高地址的特点和处理器检查.mp4 15.73M: ` m0 T: m6 I: I8 l5 H: V* Y
| ├──[2.1]--有关本章内容学习的重要提示.mp4 20.35M6 L4 Z5 k3 k* m+ {5 C5 M0 O
| ├──[2.20]--X64架构下IA-32e模式的内存访问.mp4 15.89M' J d! O+ F5 K- H& |5 w8 ]
| ├──[2.21]--X64架构的段寄存器.mp4 13.84M
; b( S- b4 ^2 X| ├──[2.22]--X64架构下的代码段描述符.mp4 14.07M
7 @/ \8 e0 `8 l# o. ~# a| ├──[2.23]--X64架构下的数据段描述符.mp4 9.52M- W( ~' }: U- m7 Q8 R
| ├──[2.24]--X64架构下的4级和5级分页简介.mp4 16.92M4 {- }8 o, [- p
| ├──[2.25]--X64架构下的系统表和系统描述符.mp4 12.91M8 E2 K$ Y- ?0 A. c) q
| ├──[2.26]--X64架构下的GDTR.mp4 18.29M9 ^2 D" L! m3 B, c
| ├──[2.27]--X64架构下的IDTR.mp4 19.36M: H! M/ F2 w" B5 w" h! V
| ├──[2.28]--X64架构下的LDT描述符和LDTR.mp4 11.14M: E# c/ l; I3 r) f: b
| ├──[2.29]--X64架构下的TSS描述符和TR.mp4 10.13M0 Y' X8 B: H4 F! R2 d: B! V
| ├──[2.2]--X64架构的由来.mp4 16.53M
# f0 p3 p1 E, ]4 [ g| ├──[2.30]--X64架构下的标志寄存器和指令指针寄存器.mp4 29.54M. C( Q: ]) e. o/ ^- ~, v
| ├──[2.31]--X64架构下传统模式的寻址方式.mp4 14.41M
5 ~/ ]' z) R/ s) c* c S| ├──[2.32]--X64架构下IA-32e模式的寻址方式.mp4 23.38M! G k' E6 D2 ~ x) Y9 e* ?3 ]. i+ j
| ├──[2.33]--64位模式的RIP相对寻址方式.mp4 15.61M# j4 ]6 j! g/ }( f8 |8 [% k, n
| ├──[2.34]--64位模式下的指令变化情况.mp4 18.89M
; \7 P5 Z) E+ R8 b5 ]- y| ├──[2.35]--IA-32e模式下的中断和异常处理概述.mp4 16.04M" h5 ~, E+ j8 Z Z
| ├──[2.3]--物理地址、有效地址和线性地址.mp4 12.99M: |! j" E8 d* \3 A+ i
| ├──[2.4]--X64架构的工作模式.mp4 11.67M' ]7 R, W3 u. e4 ?' w' y7 {' Q2 |% O
| ├──[2.5]--IA-32e模式及其子模式.mp4 9.91M
6 U; h- S7 U- N( ^9 E2 d, l| ├──[2.6]--第一次阶段性巩固和测试.mp4 47.60M
1 ~6 M' t6 | H| ├──[2.7]--X64架构对通用寄存器的扩展.mp4 17.97M
! Q6 F# ~* r4 @& H& a| ├──[2.8]--X64架构新增加的通用寄存器.mp4 9.38M0 P% Q$ V- b; n9 Q* u
| └──[2.9]--X64架构的通用寄存器访问规则.mp4 20.69M
1 x8 |' T( g" z0 B" q/ o* E├──{3}--准备进入IA-32e模式
+ Y" K6 j3 c5 \8 e% u: m! w| ├──[3.10]--调用BIOS例程显示字符串.mp4 20.12M( k& u1 a- |, h
| ├──[3.11]--读磁盘失败后的错误处理.mp4 24.81M1 D/ \4 w2 a% {. R! \
| ├──[3.12]--准备读取内核加载器程序的剩余部分.mp4 20.66M5 ^, `8 J9 e4 z3 b2 A6 ]
| ├──[3.13]--转入内核加载器执行.mp4 80.36M
- b6 j0 K' a: h8 L) \) w| ├──[3.14]--检测处理器是否支持IA-32e模式.mp4 24.89M6 v) h }) a0 i
| ├──[3.15]--位测试指令BT.mp4 35.02M
) \8 x$ w) B5 x" m, H# x9 _' L$ M| ├──[3.16]--获取和显示处理器商标信息.mp4 25.63M
9 g x% Q" K7 n* [, V' _, M9 V| ├──[3.17]--获取和保存处理器的地址尺寸数据.mp4 18.93M
% m3 S- j+ z4 ]+ y% b! D7 r| ├──[3.18]--显示处理器的地址尺寸信息.mp4 142.90M
" b# t$ P2 S/ Z9 T| ├──[3.19]--为进入保护模式准备全局描述符表.mp4 17.90M9 ?4 d( n' d( N
| ├──[3.1]--进入IA-32e模式的方法.mp4 10.48M
6 C) a4 D6 `( t3 B5 B+ A' s| ├──[3.20]--进入保护模式.mp4 46.41M
# h; _3 w! [" W% @+ E| ├──[3.21]--在保护模式下显示字符串.mp4 82.57M2 O& `, _0 `, Q- a& f, K; a
| ├──[3.22]--有关内核程序及其如何加载的说明.mp4 21.62M, ~" V8 X) k% v' b
| ├──[3.23]--读取内核程序的第一个扇区.mp4 20.29M
: i8 \9 l- b. Y% n( _: E% ^# Y| ├──[3.24]--将内核程序完全加载到内存中.mp4 26.75M+ ^( P6 C" j- ~. N" V* P
| ├──[3.2]--本章的目标及源程序的组织.mp4 25.58M
+ L& M8 G0 O" E! m. d& D| ├──[3.3]--主引导程序和NASM的文件包含功能.mp4 25.38M8 v/ n3 N/ j+ q [8 \% W/ z* c
| ├──[3.4]--如何避免文件被重复包含.mp4 23.41M
5 ^3 J& g1 k. C2 Q' O0 H| ├──[3.5]--编写主引导程序的一般性建议.mp4 10.71M
2 F Y. ~9 H% n# s) \) a| ├──[3.6]--用BIOS硬盘扩展读加载内核加载器.mp4 16.55M
4 \; ], X6 R7 v6 ]| ├──[3.7]--在程序中使用NASM运算符和表达式.mp4 16.23M3 Q8 [8 A% V* o6 q
| ├──[3.8]--内核加载器程序的有效标志和长度.mp4 14.36M
: P4 B: B+ `' C| └──[3.9]--通过数据段访问栈中的数据结构.mp4 8.94M
- K% o& i4 ]4 y2 x3 x/ _9 S├──{4}--为进入IA-32e模式准备4级分页
) u( v7 y& [. h7 M6 q| ├──[4.10]--创建与低端2MB物理内存对应的4级头表项和页目录指针表.mp4 18.94M. u! [# B+ Z& p: \. k3 |- Z
| ├──[4.11]--创建与低端2MB物理内存对应的页目录指针项和页目录表.mp4 15.04M
: r& t+ ^1 X+ u; f| ├──[4.12]--创建与低端2MB物理内存对应的页目录项.mp4 10.18M
/ P+ U+ k# W' a8 s$ T. |; c8 G| ├──[4.13]--将物理内存低端的2MB映射到线性地址空间的高端.mp4 20.25M
7 D- T6 _5 D. e2 H/ s4 ]! V| ├──[4.14]--为多任务环境准备必要的4级头表项.mp4 14.07M
1 S0 }) k! }" ^) x5 \| ├──[4.15]--为内核的4级分页系统预分配254个页目录指针表.mp4 15.65M' e1 E9 ?- }# O- |
| ├──[4.16]--在内核的4级头表内安装254个表项并清空相关的页目录指针表.mp4 22.36M
, v% g) ~ g4 d: `- Y| ├──[4.17]--进程上下文标识PCID.mp4 20.80M
) ] s. R2 y$ F/ o6 G| ├──[4.18]--控制寄存器CR3的内容格式.mp4 10.59M
, K, N; }& r5 q" J- q| ├──[4.19]--设置控制寄存器CR3并开启物理地址扩展功能.mp4 9.77M: U8 p$ ~8 `! y }; W0 w
| ├──[4.1]--4级分页的结构和原理.mp4 16.55M) j- A) }, _) F U
| ├──[4.20]--型号专属寄存器IA32_EFER的设置和分页的开启.mp4 25.42M
3 R8 \0 W, @6 z3 m1 c| ├──[4.2]--2MB和1GB页面的4级分页方式.mp4 12.03M
1 {, M- e7 J( m. K9 R! `/ W| ├──[4.3]--4级头表项的格式.mp4 21.10M3 L i0 K. J u$ y
| ├──[4.4]--页目录指针项的格式.mp4 17.43M
, V1 e( i3 g6 @, W3 w- S0 S5 A| ├──[4.5]--页目录项和页表项的格式.mp4 10.00M
S! r! E2 e( t+ R$ A| ├──[4.6]--4级头表的创建和初始化.mp4 12.94M1 w$ \6 ~, `) @" e( Y7 A$ {
| ├──[4.7]--创建指向4级头表自身的4级头表项.mp4 14.20M. d2 Z) y2 P# q
| ├──[4.8]--准备映射物理内存的低端2MB空间.mp4 33.21M
( l0 ~& R+ K' z* T# k| └──[4.9]--在4级分页中使用2MB的物理页.mp4 9.54M+ `8 Y9 c4 x) W
├──{5}--进入IA-32e的64位模式执行 * p% O: V* c1 J- F* z
| ├──[5.10]--通用异常服务例程的工作过程.mp4 24.81M
" r6 i, M& e) d* J9 c9 B| ├──[5.11]--加载有效地址指令LEA.mp4 18.25M0 J" ^: b: c2 e- k* I1 G
| ├──[5.12]--创建通用中断处理过程的中断门.mp4 20.55M2 s. l9 ^' O' @
| ├──[5.13]--在IDT内安装前32个与异常有关的中断门.mp4 23.06M
/ z8 @+ c$ s1 l3 v& d| ├──[5.14]--在IDT内安装剩余的中断门并加载IDTR.mp4 18.09M, R* x' M0 }. f1 \4 A, x. v; t
| ├──[5.15]--初始化8259中断控制器.mp4 17.01M1 q- h( H8 p/ b9 r
| ├──[5.16]--打印64位模式下的第一条信息.mp4 22.09M
9 m& L5 n% \8 H8 k" x& R. ?* g| ├──[5.17]--在虚拟机上观察内核的运行情况.mp4 12.70M. o9 R. K; P3 T; }$ a, S; l6 `
| ├──[5.1]--在IA-32e的兼容模式下显示文本信息.mp4 26.72M! ~" J+ F, ? x0 h1 s1 F
| ├──[5.2]--通过远返回方式进入64位模式的内核.mp4 35.80M1 i' h6 f! g; D* s
| ├──[5.3]--准备让内核工作在线性地址空间的高端.mp4 15.67M
0 w! [ ?2 f+ s: _5 \- c! b| ├──[5.4]--启用GDT和栈区的高端线性地址.mp4 22.69M
" {$ X0 n( x; R! {+ e6 C r# a0 _% `| ├──[5.5]--使用RIP相对寻址将内核的起始线性地址改为高端地址.mp4 19.16M
8 l* a4 e3 `9 b0 G$ p| ├──[5.6]--让处理器转到内核程序对应的高端位置继续执行.mp4 15.54M
6 ]7 Q3 Z) @- n7 e| ├──[5.7]--IA-32e模式下的中断门和陷阱门.mp4 15.31M2 V3 l# C2 S7 D! x6 B2 C" l
| ├──[5.8]--IA-32e模式下的中断处理过程.mp4 17.22M
R: d; i$ m; y2 y' Q5 x3 p| └──[5.9]--内核的文件组织与通用的中断和异常处理策略.mp4 22.55M5 N' d" n& |1 G
└──{6}--单处理器环境下的多任务管理和调度
/ g" b' `7 L' A3 ^. V! U| ├──[6.10]--内核可用线性地址的获取和更新.mp4 23.81M/ p8 n/ A! q: Y. S/ a, v$ _6 Y
| ├──[6.11]--立即数在64位模式下的长度限制.mp4 13.63M
9 `" |) l2 _. O% O( t| ├──[6.12]--计算本次内存分配涉及的线性地址范围.mp4 14.09M8 q& l/ e' j$ T+ O9 Q* Z; Y$ O
| ├──[6.13]--获取与指定线性地址对应的4级头表项的线性地址.mp4 27.09M7 z: n: G% s1 W+ W. N
| ├──[6.14]--页面分配与页映射位串.mp4 17.28M
+ h2 ]5 T3 I: \| ├──[6.15]--页映射位串的定义和空闲页的查找.mp4 23.66M' s9 A6 r! G& l
| ├──[6.16]--获取与指定线性地址对应的页目录指针项的线性地址.mp4 26.83M. q- z) [8 w6 Q$ F8 C5 x
| ├──[6.17]--检查与指定线性地址对应的页目录指针项是否存在.mp4 11.64M3 n; u3 y0 I& ?% N' R
| ├──[6.18]--分配页目录表并安装与线性地址对应的页目录指针项.mp4 15.03M: G" G0 {2 G4 [* ]3 w, A
| ├──[6.19]--安装与指定线性地址对应的页目录项、页表项和页面.mp4 20.36M0 y0 [( d4 |- \2 }9 u B4 t; W! A
| ├──[6.1]--单处理器环境下的多任务概述.mp4 24.38M% G: C; ]4 L1 V# g
| ├──[6.20]--64位LDT和TSS描述符的格式.mp4 15.63M1 R5 l0 w! F6 Y6 V
| ├──[6.21]--创建和安装64位的TSS描述符并加载任务寄存器TR.mp4 27.18M: C* ]3 b+ N( m. x& @ O
| ├──[6.22]--实时时钟中断的安装和系统外壳任务简介.mp4 29.93M
3 h, }' b1 F& N| ├──[6.23]--准备创建外壳任务.mp4 20.94M
, F: [: I; Q5 x+ y9 P$ m* e| ├──[6.24]--为新任务创建任务控制块PCB.mp4 18.12M5 h5 N% ?* i7 D3 S7 y
| ├──[6.25]--为新任务创建4级头表.mp4 23.92M
. u q; x3 Z/ d2 e. O| ├──[6.26]--将指定的线性地址映射到指定的物理页.mp4 27.19M
: g6 b: g/ T0 F: Q4 t| ├──[6.27]--复制当前活动4级头表的内容给新任务的4级头表.mp4 16.13M: O, q) v0 X Q" e( n4 G# ]
| ├──[6.28]--切换到新任务的地址空间并清空4级头表的前半部分.mp4 15.35M# _( b& \' o" b5 X* U2 b
| ├──[6.29]--为新任务分配0特权级使用的栈空间.mp4 22.05M$ ]$ W) _4 F% L( y# u4 _) Q+ Y
| ├──[6.2]--快速系统调用概述.mp4 12.74M5 T' B0 J; a* Y7 m) K, b* X
| ├──[6.30]--为新任务分配3特权级使用的栈空间.mp4 22.76M+ w- g; v. p p
| ├──[6.31]--从硬盘上加载用户程序.mp4 19.54M. n" Y( j* A) k3 E4 r1 j: h
| ├──[6.32]--生成任务标识.mp4 19.76M+ x9 q; z! Z4 x1 L6 `, F
| ├──[6.33]--双向PCB链表概述.mp4 18.52M
& {. j6 M* Q8 l6 q0 m& ^6 D| ├──[6.34]--将新任务的PCB添加到PCB链表中.mp4 15.96M% r: }. G( z" M0 u
| ├──[6.35]--64位的任务状态段TSS和中断栈表IST.mp4 22.33M$ Q$ g$ ]1 e) q( R5 _ N* B
| ├──[6.36]--以中断返回的方式进入外壳任务的局部空间执行.mp4 22.22M) t9 F) z2 z8 n9 @& n/ _
| ├──[6.37]--系统调用指令SYSCALL和SYSRET.mp4 24.77M
7 \2 B& V3 ]* Y1 Q0 m- e4 `$ B| ├──[6.38]--根据功能号计算内核例程的线性地址.mp4 27.96M
1 m" {0 s* @. n3 N) q| ├──[6.39]--快速系统调用的返回和指令的REX前缀.mp4 19.22M V+ X# @! ?3 @
| ├──[6.3]--型号专属寄存器IA32_STAR.mp4 25.51M* j5 f$ e' B4 p1 b' t, Y
| ├──[6.40]--准备在时钟中断的处理中执行任务切换.mp4 31.38M" F" o9 X% |% k$ s/ E" U- w* Z- `
| ├──[6.41]--执行任务切换.mp4 22.94M
" e! B! E# c' c( h, J/ @| ├──[6.42]--通过系统调用获取屏幕上可用的显示行坐标.mp4 20.27M
/ Q( f' a. ?+ E2 Q3 s$ R| ├──[6.43]--通过系统调用获取当前时间.mp4 17.18M
5 z( s/ L6 k6 b* Z7 i. i| ├──[6.44]--在外壳任务中显示当前时间.mp4 11.53M2 F I* X3 u t- L/ t R
| ├──[6.45]--用户任务的结构和功能.mp4 23.01M
8 @3 ]0 f& c& g) h; u. V| ├──[6.46]--当前任务标识的获取和用户程序例程库的介绍.mp4 20.43M
5 a' z0 A" n1 l3 v6 ?; y| ├──[6.47]--将64位二进制数转换为十进制字符串.mp4 15.01M' R3 ^) e5 h! f# k
| ├──[6.48]--在每一轮相加中将结果和加数转换为字符串.mp4 23.08M
4 m2 S, v* `% m3 q# I# q| ├──[6.49]--字符串的连接和显示.mp4 18.22M( B( O) h" r1 Q
| ├──[6.4]--准备在GDT中安装新的描述符.mp4 24.68M7 y$ T9 @, Q# `
| ├──[6.50]--用户任务的终止.mp4 32.08M' J. ]/ j; `% S$ ^$ j% \+ s
| ├──[6.51]--任务切换频次对用户体验的影响.mp4 40.36M4 z" _/ A% I7 T+ H
| ├──[6.5]--为快速系统调用安装段描述符.mp4 25.62M
1 A1 R: Q8 v7 k, v4 s# M8 x# k1 ~| ├──[6.6]--为快速系统调用准备段选择子.mp4 13.84M4 n2 a; l+ ?. Q9 U8 m
| ├──[6.7]--设置快速系统调用的入口点.mp4 14.27M
# Z; z: X- d6 z- g; \, a| ├──[6.8]--快速系统调用时的RFLAGS和栈切换.mp4 13.13M% A9 h4 m+ E" {# v' y
| └──[6.9]--动态内存分配和内核空间的分配策略.mp4 14.98M3 J9 ^" M% h, _+ f' u; i
5 V) u6 ~( `3 ^% T, K P. y& B
/ A! w( J0 U& U4 _" }2 B% p/ H3 O4 N- M$ U
; h5 p* o( m# X& Q8 z资源下载地址和密码(百度云盘): [/hide] 百度网盘信息回帖可见
0 b) [, H# K9 o
6 D: `7 Q$ z0 X/ ~# r+ }! F% }
; M# k l! Q& P
1 x C+ _; o" P8 B; }本资源由Java自学网收集整理【www.javazx.com】 |
|