8/13/2019 04 Lap Trinh HN Phan 1
1/27
KINTRC MY TNH &
HPNG
04Lptrnh hpng(Phn1)
ThS VMinh Tr [email protected]
mailto:[email protected]:[email protected]8/13/2019 04 Lap Trinh HN Phan 1
2/27
Ngn nglptrnh2
L loingn ngnhn to(V d: C/C++) ccuthnh bi2
yutchnh:
Tvng: l cc keyword (struct, enum, if, int)
Ngphp: syntax (if(){} else{}, do{} while())
Ngn nglptrnh gip cho ngisdngn (gil lptrnh vin)
c thdintv m tcc hngdncho my tnh hotng
theo muncamnh
phctp(trutng) cacc hngdnny quytnhth
bccangn ng
phctpcng cao th bccng thp
V d: C Sharp (C#) l ngn ngbccao hnC
8/13/2019 04 Lap Trinh HN Phan 1
3/27
Nhnxt3
Ngn ngno m con ngidhiunhtlil ngn ng
my tnhkh hiu nht
Ngn ngbccng cao th con ngicng dhiunhngmy
tnh licngkh hiu
Nhngmy tnh lil nichng ta cnn hiungv
nhanh nhtc ththcthi nhngg chng ta mun
Ngn ngmy (Machine language)
OK ???If (n>0){
n=-1;}
If (n>0){
n=-1;
}
8/13/2019 04 Lap Trinh HN Phan 1
4/27
Ngn ngmy (Machine Laguage)4
Ngn ngmy cho php ngilptrnh ara cc hng
dnnginm bvi xl (CPU) c ththchinc
ngay
Cc hngdnny cgil chth/ lnh(instruction)hocm my (machine code)
Mibvi xl (CPU) c 1 ngn ngring, gil blnh
(instruction set) Trong cng 1 dng vi xl (processor family) blnhgn
gingnhau
Instruction
set
8/13/2019 04 Lap Trinh HN Phan 1
5/27
Instruction5
L dy bit chayu cum bxl trong
CPU (ALU) phithchin
Instruction gm2 thnh phn:
M lnh(opcode): thao tc cnthchin
Thng tin vton hng(operand): cc itngbtc ngbithao tc chatrong m lnh
8/13/2019 04 Lap Trinh HN Phan 1
6/27
ISA (Instruction Set Architecture)6
Tplnhdnh cho nhngbvi xl c kintrc tngt
nhau
MtsISA thng dng:
Dng vi xl 80x86 (gittx86) caIntel
IA-16: Dng xl 16 bit (Intel 8086, 80186, 80286)
IA-32: Dng xl 32 bit (Intel 80368i386, 80486i486, Pentium
II, Pentium III ) IA-64: Dng xl 64 bit (Intel x86-64 nhPentium D)
MIPS: Dng rtnhiutrong hthngnhng (embedded system)
PowerPC caIBM
8/13/2019 04 Lap Trinh HN Phan 1
7/27
ThitkISA: CISC & RISC7
C 2 trngphi thitkblnh:
Complete Instruction Set Computer (CISC): blnh
gmrtnhiulnh, tnginnphctp Reduced Instruction Set Computer (RISC): blnhch
gmcc lnhngin
Nn chnkiuno?
8/13/2019 04 Lap Trinh HN Phan 1
8/27
Tuy nhin8
Khng phiai cngmun/ c thlptrnh ngn ng
my v qu kh hiuso vingn ngbnh thngca
con ngi
Nhu cucnc bphnphin dch(interpreter)
High-levellanguage(C/C++)
MachineLaguageInterpreter
OK OK
8/13/2019 04 Lap Trinh HN Phan 1
9/27
Nhnxt9
Trong 1 strnghp, vicvitbngngn ng
cpqu cao trnn chykh chmv phi
phin dchnhiulntrthnh ngn ngmy
Hpng(Assembly language)
Highest-levellanguage
MachineLaguage
InterpreterLower-levellanguage
Lower-levellanguage
8/13/2019 04 Lap Trinh HN Phan 1
10/27
Hpng10
Cc m my chl cc con s(0 / 1)
Trong ngn ngmy khng c khi nimbinthay vo l a
ch nh, thanh ghi (lutrm lnh, dliu)
ddng lptrnh hndng k hium githay cho cc s
biudinach nh, cc tn (label, tn bin, tn chngtrnh)
Hpngrtgnvingn ngmy nhnglicon ngihiu
v sdngtthnngn ngmy
V d: Ghi gi tr5 vo thanh ghi $4
Ngn ngmy: 00110100 0000100 00000000 00000101
Hpng : ori $4, $0, 5
8/13/2019 04 Lap Trinh HN Phan 1
11/27
Lu11
V mibvi xl c 1 cutrc thanh ghi v
tplnh(ngn ng) ring nn khi lptrnh
hpngphini r l lptrnh cho bvi xlno, hay dng (family) vi xl no
V d:
Hpngcho MIPS
Hpngcho dng vi xl Intel 80x86
8/13/2019 04 Lap Trinh HN Phan 1
12/27
Tholun12
Ta c thhnh dung nhsau:
High-levellanguage
MachineLaguage
What is it? Assemblylanguage
What is it?
Compiler Assembler
temp = v[k];
v[k] = v[k+1];v[k+1] = temp;
lw $t0, 0($2)
lw $t1, 4($2)sw $t1, 0($2)
sw $t0, 4($2)
0000 1001 1100
0110 1111 0101..
8/13/2019 04 Lap Trinh HN Phan 1
13/27
Compiler13
Trnh bin dchngn ngcpcao hpng
Compiler phthucvo:
Ngn ngcpcao cbin dch
Kintrc hthngphncngbn dim n
angchy
V d:
Compiler cho C Compiler cho Java
Compiler choC on Windows C on Linux
8/13/2019 04 Lap Trinh HN Phan 1
14/27
Assembler14
Trnh bin dchhpngngn ngmy
Mtbvi xl (ikm 1 blnhxc nh) c thc
nhiuAssembler canhiunh cung cpkhc nhauchytrn cc OS khc nhau
V d: Cng l kintrc x86, nhngc thdng A86, GAS,
TASM, MASM, NASM
Assembly program phthucvo Assembler m n
sdng(do cc mrng, cimkhc nhau gia
cc Assembler)
8/13/2019 04 Lap Trinh HN Phan 1
15/27
Tholun15
Bnthn Compiler cngl chngtrnh, vyn c
bin dchbngg?
Assembler Sau khi bin dchtptin m ngunngn ngcp
cao thnh tptin m my (machine language), lm
sao chynhngtptin ny trn my tnh?Linker & Loader
8/13/2019 04 Lap Trinh HN Phan 1
16/27
Linker16
Thctkhi lptrnh, ta sdng nhiufile
(header / source) lin ktv km theo cc th
vinc sn
Cnchngtrnh Linker lin ktcc file
sau khi bin dchthnh m my ny(Object file)
Tptin thcthi (v d: .exe, .bat, .sh)
8/13/2019 04 Lap Trinh HN Phan 1
17/27
Qu trnh tofile thcthi17
Khi double click vo nhngtptin thcthi, cnchng
trnh tnh ton v tivo memory CPU xl
Loader
8/13/2019 04 Lap Trinh HN Phan 1
18/27
Qu trnh thcthi file trn my18
8/13/2019 04 Lap Trinh HN Phan 1
19/27
V d19
8/13/2019 04 Lap Trinh HN Phan 1
20/27
M hnh thct20
Compiler v Assembler c thcbqua trong 1 strnghpcth Trong thct, c 1 scompiler c thtofile thcthi nhiunntng
kintrc bn dikhc nhau, cgil cross-platform compiler
Compiler cho Java
Cygwin
Code::Block Studio
8/13/2019 04 Lap Trinh HN Phan 1
21/27
Qu trnh thcthi file trn myJava program
21
8/13/2019 04 Lap Trinh HN Phan 1
22/27
HotngcaCPU khi xl lnh22
CPU xl lnhqua 2 bc, gil chu klnh:
Nplnh(Fetch): Di chuynlnhtmemory vo thanh ghi
(register) trong CPU
Thcthi lnh(Excute): Giim lnhv thcthi thao tc yu cu
Start Fetch nextInstruction
ExecuteInstruction Halt
8/13/2019 04 Lap Trinh HN Phan 1
23/27
Qu trnh nplnh(Fetch cycle)23
MAR PC MBR Memory IR MBR PC PC + 1
Thanh ghi PC (Program Counter) Luach(address) calnhspcnp
Thanh ghi MAR (Memory Address Register) Luach(address) scoutput ra Address bus
Thanh ghi MBR (Memory Buffer Register) Lugi tr(value) scinput / output tData bus
Thanh ghi IR (Instruction Register) Lum lnhscxl tip
Control Unit di chuynm lnh, cachtrong PC, vo thanh ghi IR
Mcnh, gi trthanh ghi PC stng1 lng= chiudi calnhvacnp
8/13/2019 04 Lap Trinh HN Phan 1
24/27
V d24
x = x + y
0001000001000000000000010000110001000010000000010001000000000001 01000000
x
y
PC R1
IR
CPU
00010011
000100000100000000000001ALU
ach Lnh(Instruction)
00010000 x R100010011 R1+y R100010110 R1 x.01000000 .01000010 .
Chngtrnh
RAM
CPU
8/13/2019 04 Lap Trinh HN Phan 1
25/27
Quy trnh thcthi lnh(Execute Cycle)25
Cc bcny clpilplicho ttccc lnhtiptheo
Quy trnh ny gil Instruction cyclevng lpxl lnh
Tnh achlnh
Nplnh
Giim lnh
Tnh achca
ton hngNpton hng
Thchinlnh
Tnh achca
ton hngchaktqu
Ghi ktqu
8/13/2019 04 Lap Trinh HN Phan 1
26/27
Mtscu hi26
Ngn nglptrnh gingv khc ngn ngtnhin cacon
ngi nhngimno?
Tisao cnnhiuloingn nglptrnh: C, C++, C#, VB,
Java?
Mtchngtrnh khng khai bo binno cth c sdng
bnhkhng?
Chngtrnh cthcthi trong RAM hay CPU?
Tisao file .exe chchyctrn Windows m khng th
chytrn Linux?
8/13/2019 04 Lap Trinh HN Phan 1
27/27
Homework27
Sch Petterson & Hennessy: cchng2
(ck2.12 v 2.13)
Ti liutham kho: c08_HP_AppA.pdf
Top Related