[Powered by Google Translate] ROB Bowden: Räägime koostajad.
Selle hetkeni, sa oled lihtsalt kirjutada oma lähtekoodi
mõned failid, mis saadetakse neile läbi selle suur must kast, mis on
Rõkkama, ja välja tuleb oma käivitatava faili, mis ei
täpselt, mida sa kirjutasid oma lähtekoodi.
Maagiline nagu see on olnud, me ei kavatse lähemalt
vaadata, mis tegelikult toimub
kui oleme kompileerida faili.
Mida see tähendab koguda midagi?
>> Noh, kõige üldisemas mõttes, see tähendab,
muutes koodi kirjutatud ühes
programmeerimise keelest teise.
Aga tavaliselt, kui inimesed ütlevad, et nad koostavad midagi, nad
tähenda, et nad vőtavad seda kõrgem programmeerimine
keele madalamal tasemel programmeerimiskeelt.
Need võivad tunduda väga subjektiivne poolest.
Näiteks siis ilmselt ei mõtle C, kõrge
tasemel programmeerimise keel, kuid sa kompileerida.
Aga see kõik on suhteline.
Nagu me näeme, montaaž kood ja lõpuks masin
kood, mis oleme kompileerida alla on vaieldamatult madalam
kui C.
Kuigi me kasutame rõkkama tänapäeva tutvustamine,
palju ideid siin üle kanda teistele koostajad.
>> Sest rõkkama, on neli suurt sammu üldises
koostamine.
Need on üks, preprocessing teha eeltöötlus, kaks,
koostamise teha kompilaator, kolm, kokkupanek
teha koostajale; ja neli,
sidudes teha linker.
See võib tekitada segadust, et üks substeps üldise
Rõkkama koostajad nimetatakse kompilaator, kuid
me jõuame selleni.
Me kasutame lihtsat Tere maailm programm nagu meie näites
kogu selle video.
Võtame pilk.
>> Esimene samm on eeltöötlus.
Mis eeltöötluse teha?
In päris palju iga C programm olete kunagi lugenud või kirjalik
olete kasutanud rida koodi, mis algavad räsi.
Ma nimetan seda räsi, kuid võite ka helistada see naela, number
kirjutama, või terav.
Iga selline rida on eeltöötluse direktiiv.
Te olete ilmselt näinud # define ja # include enne, kuid seal
on veel mitmeid, et eeltöötluse tunnistab.
Lisame # define meie tere näide.
Nüüd lähme jooksma lihtsalt eeltöötluse selle dokumendiga.
Sooritades clage-E lipp, sa oled juhendades selle töötamine
lihtsalt eeltöötluse.
Vaatame, mis juhtub.
Tundub rõkkama lihtsalt sülitab välja kõik
käsureal.
Selleks, et salvestada kõik seda toodangut uus fail nimega
hello2.c, me lisab> hello2.c meie käsk.
Nüüd võtame pilk meie eeltöödeldud faili.
>> Oot, mis juhtus meie lühikese väike programm?
Kui me läheme kõik viis põhjas seda pilti, näeme
mõned koodi, et me tegelikult kirjutas.
Pange tähele, et # define on läinud ja kõik juhtumid nimi
on asendatud täpselt, mida me nimetatud
# define rida.
Mis on kõik need typedefs ja funktsioon deklaratsioonid
ülaosas faili?
Pange tähele, et # define ei olnud ainus eeltöötluse
direktiiv, et me täpsustada.
Meil on ka # include stdio.h.
Nii et kõik hull read on tegelikult lihtsalt stdio.h kopeeritud
ja kleepida üles selle faili.
Sellepärast päisefaile on nii kasulik funktsioon
deklaratsioonid.
Selle asemel oleks vaja kopeerida ja kleepida kõik funktsioon
deklaratsioonide te kavatsete kasutada ülaosas oma faili
eeltöötluse on kopeerida ja kleepida neid päises
esitada teile.
>> Nüüd, kui me oleme valmis preprocessing me liikuda onto
koostamine.
Põhjus, miks me nimetame seda sammu koostamine on, sest see on
samm kus rõkkama tegelikult ei oma koostamisel alates C
koost koodi.
Selleks, et olla rõkkama koostada faili alla komplekteerimise, kuid
jätkata enam, andke seda-S lipu
käsureal.
Võtame pilk kokkupanek
fail, mis on väljastada.
Tundub üsna erinevat keelt.
Assamblee kood on väga protsessor konkreetne.
Sel juhul alates CS50 seade töötab
virtuaalne x86 protsessor, see on x86 koost koodi.
Väga vähesed inimesed kirjutavad otse montaaž kood nendel päevadel,
kuid iga C programm, mida kunagi kirjutada saab ümber alla
arvesse koost.
Jällegi, me nimetame seda sammu koostamisel C arvesse kokkupanek
kuna me kõrgema taseme madalamale tasemele
programmeerimiskeelt.
>> Mis teeb montaaži madalamal tasemel kui C?
Noh, kokkupanek, meil on väga piiratud, mida me teha saame.
Puuduvad kui on, samas on, sest on, ega silmuseid tahes.
Aga saate täita samu asju, et neid kontrolli
struktuurid pakuvad kasutades piiratud toiminguid, mis
koost ei pakkuda.
Aga näha, kuidas väike kokkupanek tegelikult on, lähme
üks samm edasi meie koostamine, kokkupanek.
See on koostajale töö muuta montaaž kood
objektiga või masina koodi.
Pea meeles, et koostajale ei väljund kogunemisvabadust;
pigem võtab see kokkupanek ja väljundid masina koodi.
Masinkoodidena on tegelik 1 's ja 0-et CPU saab
mõista, kuigi meil on veel väike natuke tööd lahkunud
enne kui saame näidata meie programm.
Olgem koguda meie koost koodi sooritades
Rõkkama-c lipp.
Nüüd vaatame, mis kasu on kokku faili.
>> Noh, see ei aita meid väga.
Pea meeles, et masin kood on ühtesid ja nulle, et
arvuti saab aru.
See ei tähenda, et see on lihtne meile mõista.
Nii täpselt kuidas väike on koost?
See on peaaegu identne objekti kood.
Sõites paigaldatakse objekti kood on palju rohkem
tõlkimine kui transformatsioon, mistõttu
võiks pea koostajale, et
tehke tegelik koostamisel.
Tegelikult on see päris lihtne käsitsi tõlkida
paigaldatakse masina koodi.
Vaadates koost põhifunktsiooni, et esimene rida
juhtub vastavad kuueteistkümnendsüsteemis 0x55.
In binaarne, see on 1010101.
Teine rida juhtub vastavad kuueteistkümnendsüsteemis 0x895.
Ja järgmine, 0x56.
Arvestades suhteliselt lihtne tabel, siis võiks tõlkida
kokkupanek koodi, et masinad saab aru ka.
>> Nii et seal on üks allesjäänud samm
koostamine, mis seob.
Linking ühendab hunnik objekt failid üheks suureks faili
mis saab tegelikult teostada.
Linkimine on väga sõltuvad süsteemist.
Nii et lihtsaim viis saada rõkkama lihtsalt linkida objekti
faili kokku on kutsuda rõkkama kohta kõik failid, mis
soovite linkida koos.
Kui te määrate. O faili, siis ei ole vaja ümber töödelda,
koguma ja koondama kõik oma lähtekoodi.
Viskame matemaatika funktsiooni meie faili, nii et meil on
midagi linkida sisse
Vaatame nüüd kompileerida tagasi alla objekti kood ja
helistada rõkkama ta.
Oih.
Kuna me lisada matemaatilisi funktsioone, peame lüli
matemaatika raamatukogu-lm.
>> Kui me tahtsime ühendaks kamp. O failid, mis me
kirjutas meie endi, me tahaks lihtsalt täpsustada neid kõiki
käsurealt.
Piirang on see, et ainult üks nendest failidest peab
tegelikult täpsustada põhifunktsiooni või muud
tulemusel käivitatava ei tea, kust alustada
töötab oma kood.
Mis vahe on täpsustada faili linki
koos-l ja lihtsalt täpsustades fail otse?
Mitte midagi.
See on lihtsalt, et rõkkama juhtub täpselt teadma, mida faili
midagi-lm juhtub viidata.
Kui sa teaksid, et fail ise, võid määrata ka see
selgesõnaliselt.
Pea meeles, et kõik-l lipud pea tulema lõpus
Teie kliendi nõudlus.
>> Ja see kõik on see.
Kui sa lihtsalt kulgema rõkkama mõne faili, see on see, mis see on
tegelikult teevad.
Minu nimi on Rob Bowden, ja see on CS50.