HỆ THỐNG MÁY TÍNH
Ths Lê Viết Long –
04 – Kiến Trúc Bộ Lệnh
Ngụn ng lp trỡnh
2
ă
L loi ngụn ng nhõn to (Vớ d: C/C++) c cu thnh bi 2
yu t chớnh:
ă
Ô
T vng: l cỏc keyword (struct, enum, if, int)
Ô
Ng phỏp: syntax (if(){} else{}, do{} while()…)
Ngơn ngữ lập trình giúp cho người sử dụng nó (gọi là lập trình viên)
có thể diễn đạt và mơ tả các hướng dẫn cho máy tính hoạt ng
theo ý mun ca mỡnh
ă
phc tp (tru tng) ca cỏc hng dn ny quyt nh th
bc ca ngụn ng
Ô
phc tp cng cao thỡ bc cng thp
Ô
Vớ d: C Sharp (C#) là ngôn ngữ bậc cao hơn C
Nhn xột
3
ă
Ngụn ng no m con ngi d hiu nht li l ngụn ng
mỏy tớnh khú hiu nht
Ô
Ngụn ng bc càng cao thì con người càng dễ hiểu nhưng máy
tính li cng khú hiu
ă
Nhng mỏy tớnh li l ni chỳng ta cần nó hiểu đúng và
nhanh nhất để có thể thực thi những gì chúng ta muốn
à Ngơn ngữ máy (Machine language)
If (n>0)
{
n=-1;
}
OK
???
If (n>0)
{
n=-1;
}
Ngụn ng mỏy (Machine Laguage)
4
ă
Ngụn ng mỏy cho phộp ngi lập trình đưa ra các hướng
dẫn đơn giản mà bộ vi x lý (CPU) cú th thc hin c
ngay
ă
Cỏc hng dẫn này được gọi là chỉ thị / lệnh (instruction)
hoặc mó mỏy (machine code)
ă
Mi b vi x lý (CPU) cú 1 ngụn ng riờng, gi l b lnh
(instruction set)
ă
Trong cựng 1 dòng vi xử lý (processor family) bộ lệnh gần
giống nhau
Instruction
set
Instruction
5
ă
L dóy bit cha yờu cu m b x lý trong
CPU (ALU) phi thc hin
ă
Instruction gm 2 thnh phn:
Ô Mó
lnh (opcode): thao tỏc cn thc hin
Ô Thụng
tin v toỏn hng (operand): các đối tượng
bị tác động bởi thao tác chứa trong mã lệnh
ISA (Instruction Set Architecture)
6
ă
Tp lnh dnh cho nhng b vi x lý cú kin trỳc tng t
nhau
ă
Mt s ISA thụng dng:
Ô
Dũng vi x lý 80x86 (gi tt x86) ca Intel
n
IA-16: Dòng xử lý 16 bit (Intel 8086, 80186, 80286)
n
IA-32: Dòng xử lý 32 bit (Intel 80368 – i386, 80486 – i486, Pentium
II, Pentium III …)
n
IA-64: Dòng xử lý 64 bit (Intel x86-64 nh Pentium D)
Ô
MIPS: Dựng rt nhiu trong h thng nhỳng (embedded system)
Ô
PowerPC ca IBM
Thit k ISA: CISC & RISC
7
ă
Cú 2 trng phỏi thit k b lnh:
Ô
Complete Instruction Set Computer (CISC): b lnh
gm rt nhiu lnh, t n gin n phc tp
Ô
Reduced Instruction Set Computer (RISC): b lnh ch
gm cỏc lnh n gin
ă
Nờn chn kiểu nào?
Tuy nhiờn
8
ă
Khụng phi ai cng mun / cú th lp trình ngơn ngữ
máy vì q khó hiểu so với ngơn ngữ bình thường của
con người
à Nhu cầu cần có bộ phận phiên dịch (interpreter)
High-level
language
(C/C++)
OK
Interpreter
Machine
Laguage
OK
Nhn xột
9
ă
Trong 1 s trng hp, vic vit bng ngụn ngữ
cấp “quá cao” trở nên chạy khá chậm vì phải
phiên dịch nhiều lần để trở thành ngôn ngữ máy
à Hợp ngữ (Assembly language)
Highest-level
language
Lower-level
language
Lower-level
language
Interpreter
Machine
Laguage
Hp ng
10
ă
Cỏc mó mỏy ch l cỏc con s (0 / 1)
ă
Trong ngụn ng mỏy khụng cú khỏi nim bin à thay vào đó là địa
chỉ ơ nhớ, thanh ghi (lu tr mó lnh, d liu)
ă
d dng lp trỡnh hơn à dùng ký hiệu mã giả thay cho các số
biểu diễn địa chỉ ô nhớ, các tên (label, tên bin, tờn chng trỡnh)
ă
Hp ng rt gn vi ngụn ng máy nhưng lại đủ để con người hiểu
và sử dụng tt hn ngụn ng mỏy
Ô
Vớ d: Ghi giỏ tr 5 vào thanh ghi $4
Ngôn ngữ máy: 00110100 0000100 00000000 00000101
Hợp ngữ
: ori $4, $0, 5
Lu ý
11
ă
Vỡ mi b vi x lý cú 1 cu trúc thanh ghi và
tập lệnh (ngôn ngữ) riêng nên khi lập trình
hợp ngữ phải nói rõ là lập trình cho bộ vi xử lý
nào, hay dòng (family) vi xử lý no
Ô Vớ
d:
n Hp
ng cho MIPS
n Hp
ng cho dũng vi x lý Intel 80x86
Tho lun
12
ă
Ta cú th hỡnh dung nh sau:
High-level
language
What is it?
Compiler
Assembly
language
What is it?
Machine
Laguage
Assembler
temp = v[k];
lw $t0, 0($2)
0000 1001 1100
v[k] = v[k+1];
lw $t1, 4($2)
0110 1111 0101
v[k+1] = temp;
sw $t1, 0($2)
…..
sw $t0, 4($2)
Compiler
13
ă
Trỡnh biờn dch ngụn ng cp cao hp ng
ă
Compiler ph thuc vo:
Ô Ngụn
Ô Kin
ng cp cao c biờn dch
trỳc h thng phn cng bờn di m nú
ang chy
Ô Vớ
d:
n Compiler
cho C <> Compiler cho Java
n Compiler
cho “C on Windows” <> “C on Linux”
Assembler
14
ă
Trỡnh biờn dch hp ng ngụn ng mỏy
ă
Mt b vi xử lý (đi kèm 1 bộ lệnh xác định) có thể có
nhiều Assembler của nhiều nhà cung cấp khác nhau
chy trờn cỏc OS khỏc nhau
Ô
Vớ d: Cựng l kin trỳc x86, nhng cú th dựng A86, GAS,
TASM, MASM, NASM
ă
Assembly program phụ thuộc vào Assembler mà nó
sử dụng (do các mở rộng, đặc điểm khác nhau giữa
các Assembler)
Tho lun
15
ă
Bn thõn Compiler cng l chng trỡnh, vy nú c
biờn dch bng gỡ?
Assembler
ă
Sau khi ó biờn dch tp tin mã nguồn ngôn ngữ cấp
cao thành tập tin mã máy (machine language), làm
sao để chạy những tập tin này trên máy tính?
à Linker & Loader
Linker
16
ă
Thc t khi lp trỡnh, ta s dựng nhiu file
(header / source) liên kết và kèm theo các thư
viện có sẵn
à Cần chương trình Linker để liên kết các file
sau khi đã biên dịch thành mã máy này
(Object file)
à Tập tin thực thi (ví dụ: .exe, .bat, .sh)
Quỏ trỡnh to file thc thi
17
ă
Khi double click vo nhng tập tin thực thi, cần chương
trình tính tốn và tải vào memory để CPU xử lý
à Loader
Quá trình thực thi file trên máy
18
Ví dụ
19
Mụ hỡnh thc t
20
ă
Compiler v Assembler cú th c b qua trong 1 s trng hp c th
ă
Trong thc t, có 1 số compiler có thể tạo file thực thi ở nhiều nền tảng
kiến trúc bên dưới khác nhau, được gi l cross-platform compiler
Ô
Compiler cho Java
Ô
Cygwin
Ô
Code::Block Studio