Mục đich cuối cùng của việc tận dụng lỗi phần mềm là thực thi các tác vụ mong muốn. Để làm được điều đó, trước hết chúng ta phải biết rõ cấu trúc của máy tính
Nội dung trích xuất từ tài liệu:
Nghệ Thuật Tận Dụng Lỗi Phần Mềm
Chương 2
Máy tính và biên d ch
M c đích cu i cùng c a vi c t n d ng l i ph n m m là th c thi các tác v
mong mu n. Đ làm đư c đi u đó, trư c h t chúng ta ph i bi t rõ c u trúc
c a máy tính, cách th c ho t đ ng c a b vi x lý, nh ng l nh mà b vi
x lý có th th c hi n, làm sao truy n l nh t i b vi x lý. Vi c này cũng
tương t như h c ch y xe máy v y. Chúng ta ph i bi t nh n vào nút nào
đ kh i đ ng máy, nút nào đ b t đèn xin đư ng, làm sao đ r trái, làm
sao đ d ng xe.
Trong chương này, chúng ta s xem xét c u trúc máy tính mà đ c bi t
là b vi x lý (Central Processing Unit, CPU), các thanh ghi (register), và
b l nh (instruction) c a nó, cách đánh đ a ch b nh tuy n tính (linear
addressing). K ti p chúng ta s bàn t i mã máy (machine code), r i h p
ng (assembly language) đ có th chuy n qua trao đ i v cách chương
trình biên d ch (compiler) chuy n m t hàm t ngôn ng C sang h p ng .
K t thúc chương chúng ta s đưa ra m t mô hình v trí ngăn x p (stack
layout, stack diagram) c a m t hàm m u v i các đ i s và bi n n i b .
Trong su t tài li u này, chúng ta s ch nói đ n c u trúc c a b vi x
lý Intel 32 bit.
2.1 H cơ s
Trư c khi đi vào c u trúc máy tính, chúng ta c n n m rõ m t ki n th c
n n t ng là h cơ s . Có ba h có s thông d ng mà chúng ta s s d ng
trong tài li u này:
5
CHƯƠNG 2. MÁY TÍNH VÀ BIÊN D CH
H nh phân (binary) là h cơ s hai, đư c máy tính s d ng. M i m t
ch s có th có giá tr là 0, ho c 1. M i ch s này đư c g i là m t
bit. Tám (8) bit l p thành m t byte (có ký hi u là B). M t kilobyte
(KB) là 1024 (210 ) byte. M t megabyte (MB) là 1024 KB.
H th p phân (decimal) là h cơ s mư i mà chúng ta, con ngư i, s
d ng hàng ngày. M i m t ch s có th có giá tr là 0, 1, 2, 3, 4, 5,
6, 7, 8, ho c 9.
H th p l c phân (hexadecimal) là h cơ s mư i sáu, đư c s d ng đ
tính toán thay cho h nh phân vì nó ng n g n và d chuy n đ i hơn.
M i m t ch s có th có giá tr 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C,
D, E, và F trong đó A có giá tr là 10 (th p phân), B có giá tr là 11
và tương t v i C, D, E, F.
2.1.1 Chuy n đ i t h cơ s b t kỳ sang h cơ s mư i
G i cơ s đó là R, s ch s là n, ch s v trí mang ít ý nghĩa nh t (least
significant digit) là x0 (thư ng là s t n cùng bên ph i), ch s t i v trí
mang nhi u ý nghĩa nh t (most significant digit) là xn−1 (thư ng là s t n
cùng bên trái), và các ch s còn l i t x1 cho t i xn−2 . Giá tr th p phân
c a con s này s đư c tính theo công th c sau:
Gia tr. th p phan = x0 × R0 + x1 × R1 + ... + xn−2 × Rn−2 + xn−1 × Rn−1
´i ˆ
Ví d giá tr th p phân c a s nh phân 00111001 (R = 2, n = 8) là
1 × 20 +0 × 21 +0 × 22 +1 × 23 +1 × 24 +1 × 25 +0 × 26 +0 × 27 = 57, giá tr th p
phân c a s th p l c phân 7F (R = 16, n = 2) là 15 × 160 + 7 × 161 = 127.
2.1.2 Chuy n đ i qua l i gi a h nh phân và h th p l c
phân
M i m t ch s trong h th p l c phân tương ng v i b n ch s h nh
phân vì 16 = 24 . Do đó, đ chuy n đ i qua l i gi a hai h này, chúng ta ch
c n chuy n đ i t ng b n bit theo B ng 2.1.
Ví d giá tr nh phân c a s th p l c phân AF là 10101111 vì A tương
ng v i 1010 và F tương ng v i 1111, giá tr th p l c phân c a s nh
phân 01010000 là 50.
6
2.1. H CƠ S
B ng 2.1: Chuy n đ i gi a h th p l c phân và nh phân
Th p phân Th p l c phân Nh phân
0 0 0000
1 1 0001
2 2 0010
3 3 0011
4 4 0100
5 5 0101
6 6 0110
7 7 0111
8 8 1000
9 9 1001
10 A 1010
11 B 1011
12 C 1100
13 D 1101
14 E 1110
15 F 1111
7
CHƯƠNG 2. MÁY TÍNH VÀ BIÊN D CH
B ng 2.2: M t vài giá tr ph thông trong b ng mã ASCII
0 1 2 3 4 5 6 7 8 9 A B C D E F
0
1
2
0 1 2 3 4 5 6 7 8 9
3
A B C D E F G H I J K L M N O
4
P Q R S T U V W X Y Z
5
a b c d e f g h i j k l m n o
6
p q r s t u v w x y z
7
2.1.3 B ng mã ASCII
Vì máy tính ch hi u các bit 0 và 1 nên chúng ta c n có m t quy đ nh chung
v cách bi u di n nh ng ký t ch như A, B, C, X, Y, Z. B ng mã ASCII là
m t trong nh ng quy đ nh đó. B ng mã này ánh x các giá tr th p phân
nh hơn 128 (t 00 t i 7F trong h th p l c phân) thành nh ng ký t ch
thông thư ng. B ng mã này đư c s d ng ph bi n nên các h đi u hành
hi n đ i đ u tuân theo chu n ASCII.
Ngày nay chúng ta thư ng nghe nói v b ng mã Unicode vì nó th hi n
đư c h u h t các ngôn ng trên th gi i và đ c bi t là ti ng Vi t đư c giành
riêng m t vùng trong b ng mã. B n thân Unicode cũng s d ng cách ánh
x ASCII cho các ký t nh hơn 128.
B ng 2.2 li t kê m t s giá tr ph thông trong b ng mã ASCII. Theo
đó, ký t ch A hoa có mã 41 h th p l c phân, và mã th p l c 61 tương
ng v i ký t ch a thư ng, mã th p l c 35 tương ng v i ch s 5.
Ngoài ra, m t vài ký t đ c bi t như ký t k t thúc chu i NUL có mã
th p l c 00, ký t xu ng dòng, t o dòng m i (line feed, new line) có mã
th p l c 0A, ký t d i con tr v đ u dòng (carriage return) có mã th p
l c 0D, ký t kho ng tr ng có mã th p l c 20.
Chúng ta đã xem xét qua ki n th c căn b n v các h cơ s và b ng
mã ASCII. ph n k ti p chúng ta s bàn v b vi x lý c a máy tính.
8
...