1
1

00:00:01,980  -->  00:00:08,230
xin chào chào mừng trở lại vì vậy đây là những gì chúng ta
2

2

00:00:05,140  -->  00:00:11,769
hãy để lúc khác để tôi mở
3

3

00:00:08,230  -->  00:00:14,469
dự án của bạn và hãy tiếp tục thêm
4

4

00:00:11,769  -->  00:00:17,650
mã lắp ráp vào tập tin C chúng tôi sử dụng
5

5

00:00:14,469  -->  00:00:19,660
gạch dưới gạch dưới một SM và sau đó
6

6

00:00:17,650  -->  00:00:20,949
Kiểu trả về của hàm số
7

7

00:00:19,660  -->  00:00:23,890
và chúng ta sẽ gọi chức năng này
8

8

00:00:20,949  -->  00:00:26,890
đặt tên là SVC Handler và sau đó là
9

9

00:00:23,890  -->  00:00:29,230
chấp nhận tài liệu hay không cái này không
10

10

00:00:26,890  -->  00:00:32,379
vâng, đây sẽ là hội
11

11

00:00:29,230  -->  00:00:34,570
chặn có đừng lo lắng về màu đỏ này
12

12

00:00:32,379  -->  00:00:37,360
đánh dấu ở đây để như chúng ta đã nói chúng ta phải
13

13

00:00:34,570  -->  00:00:41,890
tìm ra ngăn xếp nào đang được sử dụng
14

14

00:00:37,360  -->  00:00:45,640
và để làm điều đó, chúng ta phải kiểm tra bit hai
15

15

00:00:41,890  -->  00:00:50,739
của thanh ghi liên kết và chúng tôi kiểm tra bằng cách sử dụng
16

16

00:00:45,640  -->  00:00:53,020
hướng dẫn TST để chúng tôi kiểm tra liên kết
17

17

00:00:50,739  -->  00:00:56,469
đăng ký và sau đó chúng tôi sử dụng số bốn và
18

18

00:00:53,020  -->  00:00:59,770
số bốn ở đây là viết tắt của bit nếu tôi
19

19

00:00:56,469  -->  00:01:05,199
mở rộng số bốn thành mã nhị phân
20

20

00:00:59,770  -->  00:01:07,540
cái này và như bạn có thể thấy đây là 0 1 2
21

21

00:01:05,199  -->  00:01:11,590
chúng tôi sử dụng cái này và chúng tôi sử dụng TST
22

22

00:01:07,540  -->  00:01:14,470
hướng dẫn nhớ mã trả về exe
23

23

00:01:11,590  -->  00:01:16,330
chúng tôi đã nói về một loại tên giả
24

24

00:01:14,470  -->  00:01:19,619
đưa ra nội dung của liên kết
25

25

00:01:16,330  -->  00:01:24,310
đăng ký như vậy bằng cách đọc đăng ký liên kết
26

26

00:01:19,619  -->  00:01:26,979
chúng tôi đang đọc mã trả lại exe như chúng tôi
27

27

00:01:24,310  -->  00:01:31,299
đã đề cập trước đó bit 2 của exe
28

28

00:01:26,979  -->  00:01:34,329
mã trả về cho chúng ta biết ngăn xếp trả về
29

29

00:01:31,299  -->  00:01:38,380
khi nào ngăn xếp quá trình của chính
30

30

00:01:34,329  -->  00:01:40,420
ngăn xếp bằng cách kiểm tra giá trị này chúng ta có thể
31

31

00:01:38,380  -->  00:01:43,270
có thể tìm ra điều đó như tôi đã nói
32

32

00:01:40,420  -->  00:01:45,490
sử dụng opcode TST và nó chấp nhận hai
33

33

00:01:43,270  -->  00:01:48,070
toán hạng đầu tiên là thanh ghi
34

34

00:01:45,490  -->  00:01:51,130
và cái thứ hai là bit để kiểm tra
35

35

00:01:48,070  -->  00:01:54,210
sau đó chúng tôi đã thử nghiệm điều này sau khi chúng tôi
36

36

00:01:51,130  -->  00:01:57,939
kiểm tra bit 2 của thanh ghi liên kết
37

37

00:01:54,210  -->  00:02:01,509
chúng ta có thể bắt đầu hướng dẫn if-then-other
38

38

00:01:57,939  -->  00:02:04,710
khối sử dụng bằng nhau như điều kiện ok
39

39

00:02:01,509  -->  00:02:07,630
hãy để tôi chỉ cho bạn cách chúng ta có thể sử dụng
40

40

00:02:04,710  -->  00:02:10,509
đó là một chỉ dẫn trong cánh tay
41

41

00:02:07,630  -->  00:02:13,660
tập lệnh là viết tắt của if then other
42

42

00:02:10,509  -->  00:02:14,200
và sau đó EQ hướng dẫn cụ thể này
43

43

00:02:13,660  -->  00:02:17,830
đi
44

44

00:02:14,200  -->  00:02:24,420
hai hướng dẫn tiếp theo của mrs eq và
45

45

00:02:17,830  -->  00:02:28,450
mrs và e vì vậy chúng tôi bắt đầu với mrs eq
46

46

00:02:24,420  -->  00:02:30,880
nhớ tôi nói mrs rồi MS
47

47

00:02:28,450  -->  00:02:37,870
là hữu ích truy cập đặc biệt
48

48

00:02:30,880  -->  00:02:41,110
đăng ký để chúng tôi sử dụng mrs eq để truy cập
49

49

00:02:37,870  -->  00:02:46,630
con trỏ ngăn xếp chính và sau đó chúng ta đi qua
50

50

00:02:41,110  -->  00:02:50,049
ở đây và ở đó chúng ta thấy mrs và e r0 một lần nữa
51

51

00:02:46,630  -->  00:02:52,959
và sau đó quá trình bắt đầu
52

52

00:02:50,049  -->  00:02:55,380
vì vậy, dòng này có nghĩa là nếu bạn gọi đến số không
53

53

00:02:52,959  -->  00:02:58,510
sau khi bạn kiểm tra điều này nếu bằng không
54

54

00:02:55,380  -->  00:03:02,200
sao chép giá trị được lưu trữ trong ngăn xếp chính
55

55

00:02:58,510  -->  00:03:06,370
con trỏ vào r0 nếu không bằng không
56

56

00:03:02,200  -->  00:03:09,370
Điều này ở đây cho chúng ta không bằng nếu không
57

57

00:03:06,370  -->  00:03:12,760
bằng 0 sau đó sao chép giá trị được lưu trữ
58

58

00:03:09,370  -->  00:03:14,799
trong quá trình con trỏ ngăn xếp vào r0 vì vậy
59

59

00:03:12,760  -->  00:03:18,040
Tôi sẽ chỉ đi qua toàn bộ mã một lần nữa
60

60

00:03:14,799  -->  00:03:21,130
một lần nữa để chúng tôi bắt đầu bằng cách thử nghiệm
61

61

00:03:18,040  -->  00:03:26,319
liên kết đăng ký bit quá và sau đó chúng ta bắt đầu
62

62

00:03:21,130  -->  00:03:29,380
khối if-then-other sử dụng bằng
63

63

00:03:26,319  -->  00:03:31,510
điều kiện để nó giống như tôi
64

64

00:03:29,380  -->  00:03:40,180
chỉ cần đặt một nhận xét ở đây tôi chỉ cần làm sạch
65

65

00:03:31,510  -->  00:03:50,889
ở đây xem dòng một và sau đó chỉ muốn
66

66

00:03:40,180  -->  00:03:53,049
cho bản sửa đổi của bạn, vâng, vì vậy, một bài kiểm tra
67

67

00:03:50,889  -->  00:03:56,410
giá trị được lưu trữ trong bit hai của liên kết
68

68

00:03:53,049  -->  00:03:59,019
đăng ký dòng để bắt đầu if-then-other
69

69

00:03:56,410  -->  00:04:02,380
khối lệnh sử dụng bằng như
70

70

00:03:59,019  -->  00:04:05,620
dòng điều kiện ba nếu giá trị được lưu trữ trong
71

71

00:04:02,380  -->  00:04:08,859
bit hai của thanh ghi liên kết bằng
72

72

00:04:05,620  -->  00:04:11,739
0 thì con trỏ ngăn xếp chính đang được sử dụng
73

73

00:04:08,859  -->  00:04:16,180
sao chép giá trị của con trỏ ngăn xếp chính
74

74

00:04:11,739  -->  00:04:18,760
vào dòng 0 của chúng tôi nếu giá trị được lưu trữ
75

75

00:04:16,180  -->  00:04:22,330
trong batu của thanh ghi liên kết là không
76

76

00:04:18,760  -->  00:04:24,820
bằng 0 thì quá trình stack có
77

77

00:04:22,330  -->  00:04:27,630
đã được sử dụng sao chép giá trị của quá trình
78

78

00:04:24,820  -->  00:04:30,400
xếp vào số 0 của chúng tôi
79

79

00:04:27,630  -->  00:04:33,100
tất nhiên chúng tôi sử dụng không bằng không
80

80

00:04:30,400  -->  00:04:37,449
bởi vì nếu giá trị không bằng 0 là một
81

81

00:04:33,100  -->  00:04:41,710
và như chúng ta đã thấy nếu nó là một thì nó có nghĩa là
82

82

00:04:37,449  -->  00:04:45,340
đó là quá trình ngăn xếp nên sau khi chúng tôi phát hiện ra
83

83

00:04:41,710  -->  00:04:48,520
ngăn xếp nào đã được sử dụng, chúng ta có thể
84

84

00:04:45,340  -->  00:04:51,190
sau đó sử dụng các hoạt động chi nhánh để chi nhánh
85

85

00:04:48,520  -->  00:04:54,520
hết mã này đến mã khác
86

86

00:04:51,190  -->  00:04:56,410
Chức năng hoàn thành trình xử lý SVC
87

87

00:04:54,520  -->  00:04:59,440
những gì tôi sẽ làm là tôi sẽ đặt
88

88

00:04:56,410  -->  00:05:01,210
B ở đây là hoạt động chi nhánh và
89

89

00:04:59,440  -->  00:05:06,099
sau đó tôi sẽ đến
90

90

00:05:01,210  -->  00:05:08,800
gạch dưới C ++ và sau đó với điều này tôi sẽ
91

91

00:05:06,099  -->  00:05:11,639
Đặt một tên hàm yeah
92

92

00:05:08,800  -->  00:05:13,210
hướng dẫn này nói với nó để phân nhánh
93

93

00:05:11,639  -->  00:05:16,150
Chức năng này
94

94

00:05:13,210  -->  00:05:18,330
Trình xử lý SVC gạch dưới C và
95

95

00:05:16,150  -->  00:05:21,910
Tên hàm xử lý SVC là
96

96

00:05:18,330  -->  00:05:24,310
được chuẩn hóa như mã giới tính MCM s / s
97

97

00:05:21,910  -->  00:05:27,099
vì vậy chúng tôi sẽ làm theo cách đặt tên
98

98

00:05:24,310  -->  00:05:29,320
quy ước và chúng tôi sẽ tạo ra một C
99

99

00:05:27,099  -->  00:05:32,650
phiên bản vì vậy đó là lý do tại sao tôi gọi nó
100

100

00:05:29,320  -->  00:05:34,449
Trình xử lý SVC gạch dưới CI có thể có
101

101

00:05:32,650  -->  00:05:38,280
sử dụng bất kỳ tên nào khác và sau đó
102

102

00:05:34,449  -->  00:05:42,669
vì vậy hãy viết phiên bản C này và
103

103

00:05:38,280  -->  00:05:48,479
về cơ bản nó là một hàm void và chúng ta
104

104

00:05:42,669  -->  00:05:51,880
gọi nó là trình xử lý SVC và chúng ta hãy đi xem và
105

105

00:05:48,479  -->  00:05:56,070
nó lấy một con trỏ tới một số nguyên như
106

106

00:05:51,880  -->  00:06:03,190
đối số vì vậy tôi sẽ nói không dấu
107

107

00:05:56,070  -->  00:06:05,530
và SVC một RTS đây là cách tiêu chuẩn của
108

108

00:06:03,190  -->  00:06:07,570
viết này tôi sẽ mở và tôi
109

109

00:06:05,530  -->  00:06:10,330
sẽ đóng ở đây như thế này ngay bây giờ
110

110

00:06:07,570  -->  00:06:12,849
điền vào chức năng này ở đây
111

111

00:06:10,330  -->  00:06:16,030
tạo một biến cục bộ để giữ SVC
112

112

00:06:12,849  -->  00:06:22,479
số và tôi sẽ sử dụng một số không dấu
113

113

00:06:16,030  -->  00:06:26,830
số nguyên cosine int SVC trên trường
114

114

00:06:22,479  -->  00:06:28,570
số và chúng ta có thể tìm thấy số SVC trong
115

115

00:06:26,830  -->  00:06:30,490
đăng ký truy cập chương trình
116

116

00:06:28,570  -->  00:06:32,919
Tôi nhớ đăng ký truy cập chương trình
117

117

00:06:30,490  -->  00:06:35,919
giữ địa chỉ tiếp theo
118

118

00:06:32,919  -->  00:06:39,130
hướng dẫn được thực hiện để khi
119

119

00:06:35,919  -->  00:06:40,670
bộ xử lý vào Trình xử lý SVC
120

120

00:06:39,130  -->  00:06:43,850
hướng dẫn tiếp theo quá trình
121

121

00:06:40,670  -->  00:06:47,150
sẽ thực thi sẽ là SVC đầu tiên
122

122

00:06:43,850  -->  00:06:50,810
dịch vụ trong trường hợp ví dụ của chúng tôi
123

123

00:06:47,150  -->  00:06:53,360
sẽ là M quảng cáo dịch vụ SVC gây ra
124

124

00:06:50,810  -->  00:06:59,270
chúng tôi là người đầu tiên có số không
125

125

00:06:53,360  -->  00:07:06,320
ở đây để chúng ta có thể lấy số SVC
126

126

00:06:59,270  -->  00:07:08,870
và sau đó SVC tranh luận về AR TS mà chúng ta muốn
127

127

00:07:06,320  -->  00:07:11,690
chỉ số số sáu và bạn sẽ hiểu
128

128

00:07:08,870  -->  00:07:18,050
rất sớm tại sao chỉ số số 6 và sau đó
129

129

00:07:11,690  -->  00:07:23,480
trừ hai quyền và trong thực tế chúng ta có thể
130

130

00:07:18,050  -->  00:07:26,510
typecast này như chúng tôi như thế này như vậy
131

131

00:07:23,480  -->  00:07:28,970
chúng tôi sẽ nhận được số SVC được lưu trữ
132

132

00:07:26,510  -->  00:07:32,270
trong biến này nhưng trước khi chúng ta làm điều đó
133

133

00:07:28,970  -->  00:07:35,920
hãy giải thích điều này ở đây có nghĩa là gì và
134

134

00:07:32,270  -->  00:07:35,920
tại sao số sáu ở đây
