xin chào chào mừng trở lại vì vậy đây là những gì chúng ta 2 2
hãy để lúc khác để tôi mở 3 3
dự án của bạn và hãy tiếp tục thêm 4 4
mã lắp ráp vào tập tin C chúng tôi sử dụng 5 5
gạch dưới gạch dưới một SM và sau đó 6 6
Kiểu trả về của hàm số 7 7
và chúng ta sẽ gọi chức năng này 8 8
đặt tên là SVC Handler và sau đó là 9 9
chấp nhận tài liệu hay không cái này không 10 10
vâng, đây sẽ là hội 11 11
chặn có đừng lo lắng về màu đỏ này 12 12
đánh dấu ở đây để như chúng ta đã nói chúng ta phải 13 13
tìm ra ngăn xếp nào đang được sử dụng 14 14
và để làm điều đó, chúng ta phải kiểm tra bit hai 15 15
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
hướng dẫn TST để chúng tôi kiểm tra liên kết 17 17
đăng ký và sau đó chúng tôi sử dụng số bốn và 18 18
số bốn ở đây là viết tắt của bit nếu tôi 19 19
mở rộng số bốn thành mã nhị phân 20 20
cái này và như bạn có thể thấy đây là 0 1 2 21 21
chúng tôi sử dụng cái này và chúng tôi sử dụng TST 22 22
hướng dẫn nhớ mã trả về exe 23 23
chúng tôi đã nói về một loại tên giả 24 24
đưa ra nội dung của liên kết 25 25
đăng ký như vậy bằng cách đọc đăng ký liên kết 26 26
chúng tôi đang đọc mã trả lại exe như chúng tôi 27 27
đã đề cập trước đó bit 2 của exe 28 28
mã trả về cho chúng ta biết ngăn xếp trả về 29 29
khi nào ngăn xếp quá trình của chính 30 30
ngăn xếp bằng cách kiểm tra giá trị này chúng ta có thể 31 31
có thể tìm ra điều đó như tôi đã nói 32 32
sử dụng opcode TST và nó chấp nhận hai 33 33
toán hạng đầu tiên là thanh ghi 34 34
và cái thứ hai là bit để kiểm tra 35 35
sau đó chúng tôi đã thử nghiệm điều này sau khi chúng tôi 36 36
kiểm tra bit 2 của thanh ghi liên kết 37 37
chúng ta có thể bắt đầu hướng dẫn if-then-other 38 38
khối sử dụng bằng nhau như điều kiện ok 39 39
hãy để tôi chỉ cho bạn cách chúng ta có thể sử dụng 40 40
đó là một chỉ dẫn trong cánh tay 41 41
tập lệnh là viết tắt của if then other 42 42
và sau đó EQ hướng dẫn cụ thể này 43 43
đi 44 44
hai hướng dẫn tiếp theo của mrs eq và 45 45
mrs và e vì vậy chúng tôi bắt đầu với mrs eq 46 46
nhớ tôi nói mrs rồi MS 47 47
là hữu ích truy cập đặc biệt 48 48
đăng ký để chúng tôi sử dụng mrs eq để truy cập 49 49
con trỏ ngăn xếp chính và sau đó chúng ta đi qua 50 50
ở đây và ở đó chúng ta thấy mrs và e r0 một lần nữa 51 51
và sau đó quá trình bắt đầu 52 52
vì vậy, dòng này có nghĩa là nếu bạn gọi đến số không 53 53
sau khi bạn kiểm tra điều này nếu bằng không 54 54
sao chép giá trị được lưu trữ trong ngăn xếp chính 55 55
con trỏ vào r0 nếu không bằng không 56 56
Điều này ở đây cho chúng ta không bằng nếu không 57 57
bằng 0 sau đó sao chép giá trị được lưu trữ 58 58
trong quá trình con trỏ ngăn xếp vào r0 vì vậy 59 59
Tôi sẽ chỉ đi qua toàn bộ mã một lần nữa 60 60
một lần nữa để chúng tôi bắt đầu bằng cách thử nghiệm 61 61
liên kết đăng ký bit quá và sau đó chúng ta bắt đầu 62 62
khối if-then-other sử dụng bằng 63 63
điều kiện để nó giống như tôi 64 64
chỉ cần đặt một nhận xét ở đây tôi chỉ cần làm sạch 65 65
ở đây xem dòng một và sau đó chỉ muốn 66 66
cho bản sửa đổi của bạn, vâng, vì vậy, một bài kiểm tra 67 67
giá trị được lưu trữ trong bit hai của liên kết 68 68
đăng ký dòng để bắt đầu if-then-other 69 69
khối lệnh sử dụng bằng như 70 70
dòng điều kiện ba nếu giá trị được lưu trữ trong 71 71
bit hai của thanh ghi liên kết bằng 72 72
0 thì con trỏ ngăn xếp chính đang được sử dụng 73 73
sao chép giá trị của con trỏ ngăn xếp chính 74 74
vào dòng 0 của chúng tôi nếu giá trị được lưu trữ 75 75
trong batu của thanh ghi liên kết là không 76 76
bằng 0 thì quá trình stack có 77 77
đã được sử dụng sao chép giá trị của quá trình 78 78
xếp vào số 0 của chúng tôi 79 79
tất nhiên chúng tôi sử dụng không bằng không 80 80
bởi vì nếu giá trị không bằng 0 là một 81 81
và như chúng ta đã thấy nếu nó là một thì nó có nghĩa là 82 82
đó là quá trình ngăn xếp nên sau khi chúng tôi phát hiện ra 83 83
ngăn xếp nào đã được sử dụng, chúng ta có thể 84 84
sau đó sử dụng các hoạt động chi nhánh để chi nhánh 85 85
hết mã này đến mã khác 86 86
Chức năng hoàn thành trình xử lý SVC 87 87
những gì tôi sẽ làm là tôi sẽ đặt 88 88
B ở đây là hoạt động chi nhánh và 89 89
sau đó tôi sẽ đến 90 90
gạch dưới C ++ và sau đó với điều này tôi sẽ 91 91
Đặt một tên hàm yeah 92 92
hướng dẫn này nói với nó để phân nhánh 93 93
Chức năng này 94 94
Trình xử lý SVC gạch dưới C và 95 95
Tên hàm xử lý SVC là 96 96
được chuẩn hóa như mã giới tính MCM s / s 97 97
vì vậy chúng tôi sẽ làm theo cách đặt tên 98 98
quy ước và chúng tôi sẽ tạo ra một C 99 99
phiên bản vì vậy đó là lý do tại sao tôi gọi nó 100 100
Trình xử lý SVC gạch dưới CI có thể có 101 101
sử dụng bất kỳ tên nào khác và sau đó 102 102
vì vậy hãy viết phiên bản C này và 103 103
về cơ bản nó là một hàm void và chúng ta 104 104
gọi nó là trình xử lý SVC và chúng ta hãy đi xem và 105 105
nó lấy một con trỏ tới một số nguyên như 106 106
đối số vì vậy tôi sẽ nói không dấu 107 107
và SVC một RTS đây là cách tiêu chuẩn của 108 108
viết này tôi sẽ mở và tôi 109 109
sẽ đóng ở đây như thế này ngay bây giờ 110 110
điền vào chức năng này ở đây 111 111
tạo một biến cục bộ để giữ SVC 112 112
số và tôi sẽ sử dụng một số không dấu 113 113
số nguyên cosine int SVC trên trường 114 114
số và chúng ta có thể tìm thấy số SVC trong 115 115
đăng ký truy cập chương trình 116 116
Tôi nhớ đăng ký truy cập chương trình 117 117
giữ địa chỉ tiếp theo 118 118
hướng dẫn được thực hiện để khi 119 119
bộ xử lý vào Trình xử lý SVC 120 120
hướng dẫn tiếp theo quá trình 121 121
sẽ thực thi sẽ là SVC đầu tiên 122 122
dịch vụ trong trường hợp ví dụ của chúng tôi 123 123
sẽ là M quảng cáo dịch vụ SVC gây ra 124 124
chúng tôi là người đầu tiên có số không 125 125
ở đây để chúng ta có thể lấy số SVC 126 126
và sau đó SVC tranh luận về AR TS mà chúng ta muốn 127 127
chỉ số số sáu và bạn sẽ hiểu 128 128
rất sớm tại sao chỉ số số 6 và sau đó 129 129
trừ hai quyền và trong thực tế chúng ta có thể 130 130
typecast này như chúng tôi như thế này như vậy 131 131
chúng tôi sẽ nhận được số SVC được lưu trữ 132 132
trong biến này nhưng trước khi chúng ta làm điều đó 133 133
hãy giải thích điều này ở đây có nghĩa là gì và 134 134
tại sao số sáu ở đây