04 lap trinh hn phan 1

Upload: ki-ki

Post on 04-Jun-2018

222 views

Category:

Documents


0 download

TRANSCRIPT

  • 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