Kaip PC Kompiliavimo žino

Z

zainka

Guest
Labas

Beeing įterptosios sw rašytojas Aš esminis klausimas, atsižvelgiant į tai, kaip PC (DOS / Win) ir kompiliatorių tokios platformos bendradarbiauja padaryti programą.

Kai raštu programa įterptosios platformą kaip mikrokontrolerów, kompiliatorių šios platformos tiksliai žino, kur įdėti kintamieji ir konstanta programą ir rašyti, ir aš galiu rasti teisingą adresą ir vietą, ieško Sugeneruotame suport failus kaip Tha struktūra failą ar aš galiu net Defne šiose vietose savo savarankiškai.

Tačiau tai ne toks atvejis su DOS programos (už exampel) ne kompiliavimo metu jūs nežinote kur barana savo kintamuosius ir konstantas dedami ir pan.Kaip veikia programa žinoti, trukmė, kur rasti jo kintamieji?

I / O, išteklių, pavyzdžiui, PCI ir printerports ir tt yra gerai apibrėžti adresai kaip įterptųjų sistemų, nes tai yra nustatyta pagal prefferences valdybos gamintojai turi laikytis.Tačiau poilsio?

Manau PC Kompiliavimo reikia pridėti kažką panašaus į init skyriaus pradžioje, vnt programa parašyta man (kaip kompiliatorių ir įterptųjų sistemų, taip pat daryti, ir žino, kad), kuris derybose su OS veikia kompiuteryje, bet kaip yra ko darbo realiu (blogai) gyvenimą.Blogas pamoka bus gerai man šiuo metu, nes, žinoma, aš žinau, nottingh aboute šia tema, ir mano anglų yra blogai per.

Iš anksto dėkojame už wathever jums atneš
Linkėjimai
Vidar (Z)

 
Jei kompiliatorius generuoja santykinis indeksavimo kodas, tai ne problema.Jūs nustatote adresas adresą užsiregistruoti ir naudotis juo kaip nuoroda.Patalpinkite pradėti savo duomenis skyriuje A0 (I'm naudojant MC68000 kaip pavyzdį).Tada duomenis 20 bytes toli būtų paminėta kaip 20 (A0) arba kažką panašaus, kad (tai buvo keletą metų).
Absoliutus atminties nuorodos problema.Kompiliatorius (arba Linker?) Reikia sukurti failą nagłówkowy šių atminties.Krautuvo tada pereina per vykdomąjį kodą ir pritaiko absoliutus atminties adresus į faktinę atminties.Apie Pentiums ir kiti prietaisai su virtualiosios atminties žemėlapių gali būti padaryta gana skirtingai.
Aš atsimenu, kai aš pamačiau kompiliatorių, kad būtų gnerate "modulius" paleidžiamųjų kodas, kuris gali būti ne ilgiau nei 32K dydžio.Aš žinojau, iškart buvo generuoti kodą su 16 bitų santykinis indeksavimo režimą, kuris yra protingas, ką reikia padaryti (vėlgi, jis buvo apie 68K platforma - mano senas Amigi).

 

Welcome to EDABoard.com

Sponsor

Back
Top