Assembler și operare nucleu de sistem, dev64

Care este puterea unui frate? Puterea în adunare?
Nu frate, forța în GCC și binutils.

Assembler și operare nucleu de sistem, dev64

O concepție greșită comună - nucleul sistemului de operare este scris în limbaj de asamblare. Astăzi, voi experiment demonstrează că nu este.

Ultima dată când am experimentat cu încărcător. Încărcătorul a fost plasat un program de testare și un program de testare a fost rulat. Acesta a fost cel mai simplu lucru poate fi programat, fără un sistem de operare. Acum, scopul meu este de a face pasul următor. Colecta de testare a sistemului de operare de bază și încărcați-l în dispozitivul de încărcare.

Software de calculator este un fișier de pe disc. Pentru a fișier a devenit un proces executat de un procesor, software-ul trebuie să fie încărcate dintr-un fișier în memorie. Acest lucru face ca încărcătorul executabil. (A nu se confunda cu încărcătorul de încărcare a sistemului de operare). Din sistemul de operare formate de fișiere executabile sunt diferite, respectiv, și încărcător fișiere executabile sunt diferite.

A doua etapă în procesul de program „de fabricație“ - care leagă. Linker-ul ia fișierele obiect și le colectează din fișierul executabil într-un anumit format adecvat pentru fișierele executabile bootloader.

Astfel, avem următoarele entități:

  • formate executabile
  • Formatul obiectului

Formatul obiectului - aceasta este ceea ce obții la ieșirea compilatorului.

Formate - executabile este ceva care este susținută de fișiere executabile Incarcator folosit. Și există un alt format. Așa-numitul binar. Este pur și simplu o secvență de instrucțiuni procesor în nud. (Cel mai simplu format din nucleul sistemului de operare). În aceleași formate executabile de timp - este formatele de ieșire ale verigii.

Unul dintre verigile, care acceptă diferite formate ale fișierelor obiect și executabilele - ld (Linker GNU binutils pachet). ld furnizat cu compilatoare diferite. Inclusiv GCC. Este prin ld făcut legătura între nucleul Linux și multe alte sisteme de operare. În plus față de asamblare mutat formate, cum ar fi elf sau Windows PE, ld poate colecta, inclusiv executabilelor prime binare.

Cum se face? În mod implicit, linker-ul de pe lista de linie de comandă de fișiere obiect, linker lor linkable într-un fișier obiect specific, funcția și forma _main fișier pentru fiecare format.

ld poate fi de asemenea utilizat pentru un script special, care permite configurarea flexibilă a modului de a crea un fișier executabil. Atunci când se lucrează cu un script este ușor pentru a evita complet utilizarea de fișiere obiect ascunse, biblioteci standard și așa mai departe. Atunci când se lucrează cu un fișier script linker-ul care urmează să fie utilizat numai așa cum este specificat în fișierul script. Orice fișiere și biblioteci implicite. Numele script-ul este transferat la opțiunea -T. De exemplu, Slinky echipa de bază a două fișiere obiect, și script-ul:
$ Ld -Tlink.ld o- kernel.bin start.o second.o

Acum, pentru script-ul de legătură cu mai multe detalii. Exemplu script luat din osdever:

Am rezuma despre ld.

Există mai multe versiuni ale GCC și binutils. Acestea sprijină o varietate de formate de fișiere obiect. Inclusiv acolo versiune binutils compilat pentru Windows. Acesta vă permite să dezvolte nucleul sistemului de operare folosind orice compilator dezvoltator adecvat. Principalul lucru este că într-un cuplu de compilator are versiunea corectă a binutils, care susține versiunea necesară a obiectului și executabil (un alt obiect) fișiere.

P.S. Există un alt argument împotriva ansamblului ... După cum știți, porniți sistemul de operare după ce calculatorul a fost BIOS. BIOS - Basic Input Output System. În general, API pentru utilizarea cu aparatul, este un set de întrerupere cu date de transmisie prin registre, și un set de porturi IO și memorie mapate regiuni de memorie. A existat un astfel de sistem în momentul de dezvoltare a primelor calculatoare IBM / PC înapoi în anii '80 ai secolului trecut. Sisteme compatibile IBM PC a evoluat lent arhitectura. Au existat noi standarde și autobuze de sistem: ISA, EISA, PCI, etc. Când acest BIOS-ul a rămas în proprietatea privată a câtorva companii. BIOS-ul oferă interfața programului este numai în timp real, interfețele BIOS sunt depășite, a avut sarcina de compatibilitate și limitate în domeniul de aplicare. Această situație a început să încetinească dezvoltarea imaginației de hardware. În dezvoltarea platformei Itanium, Intel a venit cu o inițiativă EFI (Extensibil Firmware Interface). Ideea a fost de a EFI BIOS-ul de înlocuire a unei noi de dezvoltare. EFI, spre deosebire de BIOS-ul nu se mai bazează pe întrerupe. EFI nu mai este scris în limbaj de asamblare, și prevede utilizarea tabelului în funcție de diferite funcții scrise în C. Desigur, procesul de promovare a noilor tehnologii lungi. Câțiva ani au trecut și după versiuni de EFI 1.10 Intel a transferat drepturile la dezvoltarea în continuare a noului grup de inițiativă standard de UEFI nou creat, care include reprezentanți ai Intel, IBM, Apple, Microsoft și alții. Acum, această tehnologie este prefix Unified, ceea ce înseamnă că un singur firmware portabil ca calculatoare ajunge pe Intel pe bază de PC și tablete bazate pe ARM. UEFI, în comparație cu BIOS, fără îndoială, progresivă. Acesta oferă un drivere grafice, drivere de rețea, etc. Un computer fără un sistem de operare va fi capabil să efectueze, inclusiv conexiunile la rețea ... Cu toate acestea, există toate acestea și minusuri. Una dintre tehnologiile susținute de UEFI este de încărcare sigură. Interdicția nu se descarcă software-ul semnat. Acest lucru înseamnă că puteți crea fier, care va fi încărcat numai un singur autorizat (semnat) sistem de operare.

Cea mai recentă lovitură a BIOS-ul a devenit cerințele Microsoft pentru toate sistemele care sunt certificate pentru a lucra cu Windows 8, prezența UEFI de boot în condiții de siguranță.

Ceea ce rezultă din cele de mai sus? Rezultă din cele de mai sus rezultă că platforma PC-ul Intel în forma sa în care există astăzi, ar trăi mult timp. Eliberarea de Windows 8 doar în jurul valorii de colț. A doua concluzie - asamblator nu mai este un instrument, chiar și atunci când scrieți sisteme de operare. Cu noua interfață, nevoia de cod de asamblare pare să scadă. A treia concluzie - încărcarea sistemului de operare, iar arhitectura conducătorului auto, în viitorul apropiat va supraviețui schimbărilor revoluționare.

articole similare