[Powered by Google Translate] Rob Bowden: edək derleyiciler haqqında danışmaq.
Bu baxımdan qədər, yalnız mənbə kodu qədər çap etdik
bəzi faylları, ki, bu böyük qara qutu vasitəsilə göndəriləcək
Cingilti, və ki, sizin faylı gəlir
dəqiq nə sizin mənbə kodu yazdı.
Oldu ki, sehrli kimi, biz bir daha almaq olacaq
həqiqətən neler baxmaq
biz bir fayl tərtib edir.
Belə ki, nə bir şey tərtib etmək deməkdir?
>> Yaxşı, ən ümumi mənada, yalnız deməkdir
dəyişdirir kodu biri yazılı
başqa dil proqramlaşdırma.
Lakin demək adətən zaman onlar bir şey tərtib
onlar yüksək səviyyəli proqramlaşdırma onu qəbul edirik deməkdir
aşağı səviyyəli proqramlaşdırma dili dil.
Bu çox subyektiv şərtlər kimi görünə bilər.
Məsələn, yəqin ki, bir yüksək C düşünmürəm
səviyyəli proqramlaşdırma dili, ancaq tərtib yoxdur.
Amma bütün nisbi deyil.
Görəcəyik ki, sərbəst toplaşmaq kodu və nəticədə maşın
biz aşağı tərtib kod şübhəsiz aşağı səviyyədə
C. dən çox
Biz bu gün nümayiş cingilti istifadə edəcəyik baxmayaraq,
burada fikir çox digər derleyiciler üzərində daşıyır.
>> Zınqıltı üçün ümumi dörd böyük addımlar var
tərtibi.
Iki; Bu bir, preprocessor tərəfindən həyata preprocessing var
derleyiciyi tərəfindən həyata tərtibi; üç, montaj
, dörd, bu assembler tərəfindən həyata
birləşdirən Linker tərəfindən aparılır.
Bu çaşdırıcı ola bilər ki, ümumi və substeps biri
Zınqıltı derleyiciler derleyiciyi adlı, lakin
biz almaq lazımdır.
Biz nümunə kimi bir sadə salam dünya proqramı istifadə edərək olacaq
Bu video boyunca.
Bir nəzər salaq.
>> Ilk addım preprocessing edir.
Bu preprocessor nə edir?
Əgər oxumaq və ya yazdıq olduqca çox hər C proqramı,
bir hash ilə başlayan kodu xətləri istifadə etdik.
Mən bu hash zəng olacaq, ancaq siz də kilo nömrəyə zəng edə bilər
imzalamaq və ya kəskin.
Hər hansı belə xətti preprocessor direktiv deyil.
Siz yəqin # əvvəl müəyyən # daxildir görünür, lakin sonra
bu preprocessor tanıyır daha bir neçə var.
Üzrə # bizim salam dünya misal üçün müəyyən əlavə edək.
İndi bu fayl üzərində yalnız preprocessor run bildirin.
Clage the-E bayrağı keçərək, onu idarə etmək üçün göstəriş edirik
yalnız preprocessor.
Nə görmək edək.
Zınqıltı yalnız hər şeyi spits kimi görünür
command line at.
Adlı yeni fayl bu məhsulun bütün saxlamaq üçün
hello2.c, biz komanda> hello2.c əlavə edəcəyik.
İndi bizim preprocessed fayl nəzər salaq.
>> Whoa, nə bizim qısa az proqram oldu?
Biz bu faylı alt bütün yol getmək, biz görəcəksiniz
biz həqiqətən yazdı kodu bəzi.
Saylı müəyyən getdi edək ki, adı və bütün hallarda
biz müəyyən dəqiq nə ilə əvəz edilmişdir
saylı xətt müəyyən edir.
Belə ki, bütün bu typedefs və funksiyası bəyannamələrin nə
fayl üst?
Saylı müəyyən yalnız preprocessor deyil Qeyd edək ki,
biz göstərilən direktiv.
Biz həmçinin # stdio.h daxil etmişik.
Belə ki, crazy xətləri yalnız stdio.h sitemizi əslində
və bu faylı üst yapıştırılabilir.
Mövzu faylları funksiyası üçün çox faydalı Buna görə
bəyannamələrinin.
Əvəzində funksiyası bütün seçin və yapışdırıb ehtiyacı
Əgər fayl üst istifadə planlaşdırırıq bəyannamələrinin ki,
preprocessor başlığı onları seçin və yapışdırıb edəcək
Sizin üçün fayl.
>> İndi preprocessing tamamlayın ki, biz üzərində hərəkət
tərtibi.
Bu, çünki biz bu addımı tərtib zəng səbəbi
zınqıltı həqiqətən onun C-dən tərtib etmir yerləşir addım
toplaşmaq kodu.
Zınqıltı toplaşmaq bir fayl aşağı tərtib var, lakin üçün
heç bundan sonra da davam, bu keçir-S bayrağı
command line at.
Gəlin toplaşmaq nəzər
fayl ki outputted edilib.
Bu olduqca fərqli bir dil kimi görünür.
Məclis kodu çox işlemci xarakterikdir.
Bu halda, ildən CS50 cihaz bir çalışan
virtual x86 prosessor, bu x86 toplaşmaq kodu.
Çox az adam, bu gün toplantı kodu birbaşa yazmaq
lakin heç yazmaq hər C proqram aşağı çevrilmiş olur
toplaşmaq daxil.
Yenə toplaşmaq daxil C tərtib bu addımı zəng
biz daha yüksək səviyyədə bir daha aşağı səviyyədə gedir ildən
dil proqramlaşdırma.
>> Nə C-dən toplaşmaq aşağı edir?
Yaxşı, sərbəst toplaşmaq, biz çox biz nə edə məhduddur.
Heç bir varsa, olsa, var və ya loops var.
Amma eyni şeyi yerinə yetirmək olar ki, bu nəzarət
strukturları məhdud əməliyyatlar istifadə təklif edən
toplaşmaq təmin edir.
Lakin aşağı səviyyədə toplaşmaq həqiqətən yalnız necə, gidelim
bizim tərtibi daha bir addım, montaj.
Bu toplantının kodu çevirmək üçün assembler iş var
obyekt və ya maşın kodu daxil.
Bu assembler çıxış montaj deyil unutmayın;
deyil, bu, sərbəst toplaşmaq və nəticələr maşın kodu edir.
Maşın kodu faktiki 1 və 0-ın bir CPU olduğunu bilər
biz hələ tərk iş kiçik bit var, baxmayaraq ki, başa düşmək
bizim proqram run bilər.
Gəlin keçərək bizim toplaşmaq kodu toplaşmaq
Zınqıltı the-c bayrağı.
İndi yığılmış fayl var nə edək.
>> Yaxşı ki, bizə çox kömək etmir.
Maşın kodu olanları və adet sıfır olduğunu unutmayın
kompüter anlayarlar.
Bu bizə anlamaq üçün asan demək deyil.
Belə ki, sərbəst toplaşmaq dəqiq necə aşağı səviyyədədir?
Bu obyekt kodu təxminən eyni deyil.
Toplaşmaq olan obyekt kodu gedən bir çox daha çox
bir transformasiya daha translation, hansı nə
birinə assembler hesab bilər
faktiki tərtibi yoxdur.
Əslində, bu, əl-dan tərcümə olduqca asan
maşın kodu montaj.
Ilk xətti, əsas funksiyası üçün toplantıda Axtarıram
hexadecimal 0x55 uyğun olur.
Binar ki, 1010101 var.
İkinci xətt hexadecimal 0x895 uyğun olur.
Və növbəti, 0x56.
Nisbətən sadə masa nəzərə alaraq, siz tərcümə bilər
maşın çox anlamaq olar ki, kodu daxil montaj.
>> Belə bir addım qalan var
keçid olan tərtibi.
Əlaqələndirilməsi böyük bir fayla obyekt faylları bir qom birləşdirir
həqiqətən həyata bilər.
Əlaqələndirilməsi çox sistem asılıdır.
Yalnız obyekt keçid cingilti almaq üçün en asan yol
birlikdə faylları faylları bütün cingilti zəng etmək
Siz birlikdə keçid etmək istəyirəm.
Siz qeyd edin. O faylları, o, reprocess ehtiyac yoxdur
tərtib və mənbə kodu bütün toplaşmaq.
Bizim fayla bir riyaziyyat funksiyası atmaq edək, belə ki, biz
Daxil keçid şey
İndi obyekt kodu geri aşağı tərtib etsinlər və
bu cingilti çağırırıq.
Üzr istəyirik.
Biz bir riyaziyyat funksiyası daxil ildən, biz keçid lazımdır
riyaziyyat kitabxana-lm.
>> Biz dəstə birlikdə keçid istəyirdi. O faylları ki,
öz yazıldı, biz yalnız onları bütün bilersiniz istədiyiniz
command line.
Məhdudlaşdırılması bu faylları yalnız bir olmalıdır edir
əslində bir əsas funksiyası daxil və ya başqa
nəticəsində çalıştırılabilir harada başlamaq üçün bilmək deyil
Sizin kodu çalışır.
Link bir fayl ifadə arasında fərq nədir
ilə-l və yalnız birbaşa fayl ifadə?
Heç bir şey.
Bu yalnız cingilti dəqiq nə fayl bilmək olur ki,
bir şey kimi-lm müraciət olur.
Əgər fayl özünüz bilirdi varsa, siz onu müəyyən edə bilər
aydın.
Məhz bütün-l bayraqları sonunda gəlmək var unutmayın ki,
Sizin müştəri tələbatının.
>> Və buna var hamısı.
Yalnız bəzi faylları cingilti çalıştırdığınızda, bu nə edir
həqiqətən edir.
My name Rob Bowden, bu CS50 edir.