Tải bản đầy đủ (.pdf) (28 trang)

04 kien truc bo lenh Giao trinh KHTN

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (948.86 KB, 28 trang )

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



×