1
1

00:00:01,550  -->  00:00:07,770
你好，歡迎回來，嗯，讓我們談一個
2

2

00:00:05,160  -->  00:00:09,840
之前更多關於SVC處理程序的信息
3

3

00:00:07,770  -->  00:00:12,750
發揮您的遠見，以完成我們的工作
4

4

00:00:09,840  -->  00:00:15,929
代碼，以便當處理器進入
5

5

00:00:12,750  -->  00:00:20,819
SVC處理程序當然會執行
6

6

00:00:15,929  -->  00:00:23,789
SVC服務已分配但要做
7

7

00:00:20,819  -->  00:00:26,819
處理器必須知道哪個SVC
8

8

00:00:23,789  -->  00:00:29,880
當前從我們的服務執行
9

9

00:00:26,819  -->  00:00:32,430
我們已經聲明的服務示例
10

10

00:00:29,880  -->  00:00:34,710
處理器必須知道SVC
11

11

00:00:32,430  -->  00:00:38,700
為了知道哪個數字
12

12

00:00:34,710  -->  00:00:41,220
以什麼順序執行，我們可以做到這一點
13

13

00:00:38,700  -->  00:00:43,860
通過查看程序計數器
14

14

00:00:41,220  -->  00:00:47,070
註冊PC我們可以讀取值
15

15

00:00:43,860  -->  00:00:49,860
從PC然後掩蓋
16

16

00:00:47,070  -->  00:00:53,120
不需要的位不要擔心這聽起來像
17

17

00:00:49,860  -->  00:00:56,430
有點神秘，但您會在實踐中看到
18

18

00:00:53,120  -->  00:00:59,070
因此，如果我們可以訪問PC並獲得
19

19

00:00:56,430  -->  00:01:02,070
PC的價值，我們可以掩蓋一些
20

20

00:00:59,070  -->  00:01:03,840
位，並獲得我們想要的位
21

21

00:01:02,070  -->  00:01:06,090
一個有用的信息
22

22

00:01:03,840  -->  00:01:08,579
我們將在代碼中做到這一點，但是
23

23

00:01:06,090  -->  00:01:10,770
另一個問題是嗯，我們怎麼知道
24

24

00:01:08,579  -->  00:01:13,770
我正在使用哪個堆棧
25

25

00:01:10,770  -->  00:01:16,950
知道你以前可能會說對
26

26

00:01:13,770  -->  00:01:19,560
默認提到主堆棧是
27

27

00:01:16,950  -->  00:01:22,139
被使用，但是在像這樣的複雜系統中
28

28

00:01:19,560  -->  00:01:24,869
我們將成為的操作系統
29

29

00:01:22,139  -->  00:01:26,700
在這門課程中我們寫
30

30

00:01:24,869  -->  00:01:29,549
將擁有主堆棧以及
31

31

00:01:26,700  -->  00:01:32,399
進程堆棧，所以當這樣
32

32

00:01:29,549  -->  00:01:34,609
處理器必須處理的情況或情況
33

33

00:01:32,399  -->  00:01:38,340
知道當前正在使用哪個堆棧
34

34

00:01:34,609  -->  00:01:40,350
好的，我們可以從鏈接中找到
35

35

00:01:38,340  -->  00:01:42,569
註冊我們可以找到以下信息
36

36

00:01:40,350  -->  00:01:45,869
鏈接中當前使用的堆棧
37

37

00:01:42,569  -->  00:01:47,909
當處理器進入
38

38

00:01:45,869  -->  00:01:50,429
異常處理程序或中斷
39

39

00:01:47,909  -->  00:01:53,670
服務程序鏈接的值
40

40

00:01:50,429  -->  00:01:57,929
寄存器使用稱為
41

41

00:01:53,670  -->  00:02:00,779
exe返回此代碼包含
42

42

00:01:57,929  -->  00:02:04,349
函數的返回位置return
43

43

00:02:00,779  -->  00:02:06,840
模式和其他一些說明，但是
44

44

00:02:04,349  -->  00:02:11,850
我們感興趣的是第三個
45

45

00:02:06,840  -->  00:02:14,730
此exe返回的位
46

46

00:02:11,850  -->  00:02:18,760
第二，因為我們從零開始計數
47

47

00:02:14,730  -->  00:02:20,920
一二三第三位，如果位
48

48

00:02:18,760  -->  00:02:24,459
第二個是第三位是0
49

49

00:02:20,920  -->  00:02:27,430
這意味著返回到流程堆棧，如果
50

50

00:02:24,459  -->  00:02:31,120
第2位為1，表示返回
51

51

00:02:27,430  -->  00:02:33,459
主棧基本上如果位是1
52

52

00:02:31,120  -->  00:02:35,410
表示您完成跑步後
53

53

00:02:33,459  -->  00:02:38,620
異常中的代碼或
54

54

00:02:35,410  -->  00:02:41,349
中斷服務程序返回
55

55

00:02:38,620  -->  00:02:44,319
進程堆棧，如果要返回
56

56

00:02:41,349  -->  00:02:46,239
中斷後返回主堆棧
57

57

00:02:44,319  -->  00:02:48,280
服務例程或異常
58

58

00:02:46,239  -->  00:02:52,780
服務過，我還應該注意
59

59

00:02:48,280  -->  00:02:56,830
第3位的第四位相同
60

60

00:02:52,780  -->  00:02:59,650
未顯示的exe返回
61

61

00:02:56,830  -->  00:03:02,110
在這裡它可以用來告訴
62

62

00:02:59,650  -->  00:03:03,970
處理器返回哪種模式
63

63

00:03:02,110  -->  00:03:05,560
是否返迴線程模式或
64

64

00:03:03,970  -->  00:03:08,200
處理程序模式，但我們不是
65

65

00:03:05,560  -->  00:03:10,720
對此類信息感興趣，所以我們
66

66

00:03:08,200  -->  00:03:14,220
意志堅強不會壓倒自己
67

67

00:03:10,720  -->  00:03:14,220
與其他位
