[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.