Montáž Jazyk, Krok za krokom, pre Linux!

Link: http://www.duntemann.com/assembly.html

1

Dôležité Upozornenie! Pohľad debugger front end balík bol vytiahol zo všetkých distribúcie Debian, čo znamená, že nenájdete to v Ubuntu počnúc V10.04! Budem diskutovať o tejto otázke podrobnejšie nižšie.

Preklady z tejto stránky na internete:

Serbo-Croatian Jovana Milutinovich webhosting Mágov

Ďalšie preklady sú vítané a budú napojené z tu.

Chlapec. Trvalo to doslova desať rokov, ale prácu, a kniha je k dispozícii: Montáž Jazyk, Krok za krokom, Tretie Vydanie. (John Wiley Publishing, 2009. ISBN 978-0-470-49702-9. 610 pp.) Ďaleko od maloletého touchup, tretie vydanie (3E, ako by sme povedať, že v obchode) bol takmer celkom prepísať. DOS je dávno preč, a celú knihu a teraz sa zameriava na montáž programovanie pre Linux x86, pomocou slobodný a open source nástroje, ktoré zahŕňajú NASM assembler, ld linker, Kate editor, Žehnaj hex editor, a Pohľad grafické čelo k základným GNU debugger, gdb. (Kompilátor gcc zapojené aj keď sme začať prepojenie C knižnice do vášho zhromaždenia programy).

Myšlienka knihy, orechové, ako by sa mohlo zdať, je naučiť montáž jazyk ako vaša first programovací jazyk. Žiadne predchádzajúce skúsenosti potrebné. Keď som napísal veľmi prvé vydanie knihy cestu späť v roku 1988, som myslel, že to bolo trochu dosiahnuť, ale 175,000 kópie a nespočetné množstvo fanúšikov písmená neskôr, myslím, že to skutočne funguje.

Ako to funguje? Som na začiatku, skutočný začiatok, a vysvetlí vám, aké počítače sú a čo robia. Montáž jazyk musí trvať hardvéru do účet (prinajmenšom tak ďaleko, ako pamäť riešenie je dotknuté) tak som hovoriť v dĺžke cca Intel/AMD x86 hardvérové architektúry. A keď som sa konečne pustiť do učenia montáž samotný jazyk, dôraz je na pamäťovej riešenie. V zhromaždenia jazyk, ak viete, kde vaše operandov, máte tri štvrtiny spôsob, ako kdekoľvek inde, možno budete chcieť ísť.

To je radikálne odlišný od väčšiny “intro” montáž knihy, ktoré sa začne o výučbe MOV pokyn, a potom možno PRIDAŤ pokyn, s malú alebo žiadnu diskusiu kontexte, v ktorom montáž jazyk funguje. To je hlúpe. Návod je asi 35% trik v zhromaždenia jazyk. 50% je pamäť riešenie, a zvyšných 15% je kurzy ‘ ‘ends.

Preberanie Výpisov Archív…

…je jednoduché. kliknite tu. Zip súbor nie je veľký (180K) a mali by prísť dole za pár sekúnd na širokopásmové pripojenie. Ach, môj hosting nepodporuje anonymný FTP z bezpečnostných dôvodov, tak sa máte na čo ju dať dole pomocou HTTP a váš Webový prehliadač.

Sťahovanie Obsah…

…je rovnako jednoduché. Som vyslaný podrobný obsah pre knihy (vo formáte PDF; 68K) na tejto stránke. Ak chcete získať to, kliknite tu. (Tam je samostatný odkaz na vzorky kapitola pod.)

Čo je Nové?

Hoci poslaním knihy sa nezmenilo, všetko bolo silne novelizovaný, a asi 60%, je zbrusu nový materiál. DOS je preč, okrem toho, ako historický poznámke pod čiarou na hrôzy v reálnom režime segmentované model. Celú knihu teraz sa zameriava na 32-bitový chránený režim montáž jazyk pre Linux x86. Hoci nič v knihe je distro-špecifické, niektoré opisy nástrojov (a s ním súvisiace snímok obrazovky) predpokladajme, GNOME grafický shell. Som Ubuntu používateľa, takže kniha bola napísaná pomocou inštalácie Ubuntu, ale nie je nič Ubuntu-konkrétne v výukový materiál.

Niektoré upozorní na nové vydanie:

  • Všetok kód príklady sú napísané pre NASM assembler pomocou Intel syntax.
  • Všetok kód príklady sú napísané pre vykonanie na Linux console v terminálovom okne. (Programovanie pre GUI škrupiny ako GNOME a KDE je rozširujúca téma.)
  • úprave používa platformu pre diskusiu je Kate editor, ktorý sa má súbor a session management, (obmedzené) montáž zvýrazňovania syntaxe a zabudovanou terminálové okno.
  • Iné nástroje rozvoja prerokovaný v detaile obsahujú Linux linker ld, kompilátor gcc, aby sa, a dotyk.
  • Väčšina príkladov sú “čisté” montáž a komunikovať s konzolou cez int 80h hovor brány. Záverečná kapitola sa zaoberá prepojenie montáž jazykové programy s C funkcie knižnice.

, Čo je Staré?

Čo sa nezmenilo je celkový prístup: pomalé a pacient kumulatívna návod metóda, ktorá nadovšetko zdôrazňuje, ako veci fungujú. (“Kumulatívne” znamená, že funguje najlepšie zaobchádzať ako lineárny priebeh: na začiatku a prácu cez to až do konca.) Prvé tri kapitoly sa bude spomínať na tých, ktorí používajú staršie verzie knihy. Hra Big Bux a base-4 doo-wop Marťané sú stále tu. Text je konverzačné a niekedy-tak-mierne wry: Budete počuť knihy v hlave skoro rovnakým spôsobom, ako by ste počuť, keď som bola v prednej časti učebne, so druh zábavy a chlap môže mať iba výučby niečo, čo má známe a obľúbené pre väčšinu z jeho života.

Ako sa O Vzorky Kapitola?

Istá vec. Vydavateľ mi dal PDF jednej kapitoly na distribúciu bez poplatku. Kliknite tu pre získanie. (291K PDF) Znova, môj hosting služby neumožňuje anonymný FTP, takže budete musieť priniesť ho cez Web prehliadač.

Kde Kúpiť Knihu

Vaše väčších kníhkupectvách bude pravdepodobne niesť knihy, a určite väčšie technické obchody, ako SoftPro Knihy bude mať. Ak nemôžete nájsť to lokálne, určite pozrieť on-line:

Poznámka dobre, že existujú tri staršie verzie tejto knihy: Montáž Jazyk Od Square One (1989; od Scott, Foresman a nie Wiley), Montáž Jazyk Krok za krokom (1992), a Montáž Jazyk, Krok za krokom, Druhé Vydanie (2000). Ak kupujete používa kópiu 2009 edition, aby sa veľmi istí, že ste objednávanie právo edition!

Ak Máte 64-Bitové PC…

Upozorňujeme, že kniha bola napísaná pre najbežnejšie PC hardvéru, na základe Intel/AMD 32-bitové Procesory. Dúfal som, že si niektoré 64-bitové pokrytie tam, ale vydavateľ nastaviť pevný limit na dĺžku knihy z nákladových dôvodov. Budem sa snažiť a twist svoje ruky, aby mi inej 100 stránok pre ďalší ročník, ale medzitým, je to 32-bitová knihy.

Povedal, že, 64-bitové Počítače sú teraz všade, a tam je problém, zahŕňajúcich charakter spustiteľný kód súboru. Ak chcete vyrobiť originálny 64-bitový montáž jazyk spustiteľný súbor, musíte povedať NASM generovať korelácia súbor v 64-bitovej korelácia formát, elf64. V 64-bitové PC, linker očakáva, že 64-bitové elf64 súboru v predvolenom nastavení, a bude sa sťažovať, ak sa vám strane 32-bitové elf súboru bez varovania. (elf a elf32 sú synonymá v NASM, dokonca aj vtedy, ak používate 64-bitové PC.)

Existujú dva spôsoby, ako ísť na 64-bitové PC:

  • Generovať 32-bitové spustiteľný súbor, ktorý bude prebiehať buď na 32-bitovú verziu alebo 64-bitové PC.
  • Generovať 64-bitové spustiteľný súbor, ktorý bude prebiehať výhradne v 64-bitové PC.

Vytvorenie 32-bitové spustiteľný na 64-bitový vyžaduje, aby ste “varovať” linker, že 32-bitové elf súboru sa blíži:

nasm -f elf -g -F stabs eat.asm
ld -o eat eat.o -melf_i386

To je to, čo melf_i386 smernica sa: To hovorí, ld, že jesť.o súbor je elf32 korelácia objekt súboru. Aktivácia NASM je rovnaký, ako by ste použiť na 32-bit PC.

Vytváranie 64-bitových spustiteľný vyžaduje, aby ste povedať, NASM výslovne generovať 64-bitové korelácia súbor:

nasm -f elf64 -g -F stabs eat.asm
ld -o eat eat.o

Tu, pomocou elf64 namiesto elf hovorí NASM generovať 64-bitové korelácia súbor. Linker uplatnenie je rovnaké ako v knihe, pretože na 64-bitové PC, ld očakáva, že .o súbor, ktorý si ruku, bude 64-bitové v predvolenom nastavení.

Je tam akejkoľvek výhody vytváranie 64-bitových spustiteľných súborov? Nie pre malých programov, ktoré budete písať, keď ste vzdelávania montáž (najmä preto, že 64-bitové spustiteľné súbory sú trochu väčšie ako 32-bitové spustiteľné súbory), ale keď robíte ambiciózne programové v zhromaždenia budete mať celý 64-bit x86-64 architektúru na váš príkaz, s dodatočné 64-bitové registre, 64-bitové inštrukcie režimy, a “dlhé režime” memory riešenie.

Ďakujeme Gary Albers pre upozorniť ma tento problém, pretože som napísala všetky moje napríklad kód na 32-bitovom poli a nedal dostatok myslel, že čo sa môže stať, pomocou predvoleného assembler a linker vyvolaniami na 64-bitové PC. On vytvoriť celú stránku diskutovať problém a je potrebné zavrieť prečítajte si:

http://www.stepbystep.ishipaco.com/

S trochou šťastia sa na všetkých, budem mať priestor na pokrytie 64-bitové montáž programovanie v ďalšom vydaní knihy.

Gary tiež popisuje svoje zážitky pomocou Kdbg namiesto Pohľad. Čo nás privádza k jednej z lousiest kusov zlé načasovanie som kedy zažil:

Insight Je Teraz Chýba Ubuntu!

To sa mi úplne prekvapila. Neskoro v roku 2009 (a nie dlho po kniha vyšla!) rozhodnutie bolo vyrobené odstrániť Pohľad debugger front end balík z Debian Linux, na ktorý Ubuntu je založené. Takže už nebudete nájsť Pohľad predinštalovaný v Ubuntu, počnúc V10.04, Lucid Lynx. Ak si prinesiete do terminálu a skúste ho spustiť, Ubuntu, nenájde ho.

To je divný problém, najmä preto, že som nemal šťastie recompiling Pohľad od zdroja. Tam musí byť nejaký hlbší problém, ale ak vývojári balíka nie sú údržbu, tam nemusí byť veľa, každý z nás môže urobiť ísť dopredu.

V tomto bode, máte niekoľko možností:

  • Vytvoriť novú oblasť na jednom z vašich zariadení a nainštalovať Ubuntu 9.10 do neho. To je posledná verzia, že viem, že obsahuje Prehľad. Nemusíte obrovské množstvo voľného miesta na disku ak to chcete urobiť, za predpokladu, že ste nenainštalovali veľa softwaru v Ubuntu 9.10 stupňa.
  • Inštalácia VirtualBox (zadarmo virtual machine manager, získateľná z Ubuntu Software center) a nainštalovať Ubuntu 9.10 v virtuálny stroj. Potom použite VM pre všetky vaše montáž projekty spojené s knihou. To nie je ideálne, ale to bude určite fungovať. Aj keď sa to môže zdať zvláštne nainštalovať staršiu verziu operačného systému na novšiu verziu toho istého operačného systému, ľudia robia to celú dobu, na podporu “legacy” verzie softwaru, ktoré nebudú bežať podľa aktuálnej verzii. (Veľa ľudí nainštalovaný systém Windows XP v virtuálny stroj pod windows Vista, po zistilo sa, že Vista by nespustí veľa systému Windows staršie balíky správne.)
  • Načítať a nainštalovať Wubi 9.04. Wubi je inštalátor pre Linux, ktorý vedie z Windows a robí Ubuntu len ďalší (veľmi) veľký softvér nainštalovať. Wubi 9.04 nainštaluje Ubuntu 9.04; neinštalujte veľmi najnovšiu verziu, ktorá nainštaluje Ubuntu 10.04. Neskúšal som to ešte, ale niekoľko čitatelia majú napísané na mňa a povedal mi, že to funguje a že to, ako sa budete pracovať prostredníctvom knihy. Wubi je to zbytočné buď vytvoriť novú jednotku pevného disku alebo virtuálny stroj. To znie dobre, ja to skúsim a správa sem späť.
  • Ak naozaj chcete používať aktuálne verzie Linux namiesto Ubuntu 9.10, vytvoriť inštanciu Fedora 13. Ani jeden Pohľad, ani Kate sú štandardne nainštalované, ale môžete ich inštalovať buď pomocou yum alebo Pridať/Odstrániť Programy možnosť (pozri nižšie.) Musíte si tiež nainštalovať Konsole, ktoré Kate vyvolá jeho terminálové okno. Na druhy text-mode príklad programy, ktoré sa v knihe prezentuje, nie je žiadny rozdiel medzi Linux distribúcií, akonáhle budete mať nainštalované nástroje.

Inštalácia Kate Pod Fedora 13

Upozorňujeme, že podľa Fedora 13 a Gnome, nebudete môcť nájsť Kate editor hľadania pre “kate” pomocou položky Pridanie alebo Odstránenie programov. Namiesto toho, si musíte nainštalovať celý KDE SDK balík, ktorý môžete nájsť prostredníctvom vyhľadávania pre “kdesdk”. Inštalácia KDE SDK nainštaluje Kate ako súčasť nástrojov. Ak ste nainštalovali Fedora s KDE UI, ste už dostali Kate.

Teraz, inštalácia Kate nie je dosť. Musíte tiež nainštalovať Konsole, pretože Kate vyvolá Konsole, keď kliknete na Kate, je “Terminál” tlačidlo spustiť program, ktorý upravujete v Kate.Rovnako ako Kate je súčasťou väčšieho balíka s názvom kdesdk, Konsole je súčasťou väčšieho balíka s názvom kdebase. Vyhľadávanie pre “cups” pomocou položky Pridanie alebo Odstránenie Programov a nainštalovať ho. To skutočne ťahá dosť veľa vecí (najčastejšie je to, že nebudete musieť, žiaľ), ale to bude inštalovať Konsole.

Ak chcete nainštalovať Pohľad vyhľadávania pre “insight” pomocou položky Pridanie alebo Odstránenie programov a nainštalovať ho. Pohľad nie je naozaj súčasťou každej väčšej skupiny programy, takže ho nainštaluje rýchlo.

Pointa je, že Pohľad pravdepodobne nie je vracali do Debianu, a teda nie je to prichádza späť na Ubuntu. Ak môžem objavovať spoľahlivý spôsob, ako nainštalovať Pohľad manuálne pod Ubuntu 10.04 a neskôr budem písať to tu. Medzitým, vaše najlepšie stávka je inštalácia kópiu Ubuntu 9.10 buď v samostatnej oblasti alebo v virtuálneho počítača, a používate túto kópiu pre vaše montáž vzdelávacie projekty.

Opäť, Gary Albers má veľa čo povedať o poznanie problému na jeho Webovej stránke.

Errata pre Tretí Ročník

  • P. 29, číslovaný zoznam bodu 6: ,048,576 by mali byť 1,048,576
    (Pozorovateľ vďaka Patrick Henning.)
  • P. 79, piaty odsek: 66536 by mali byť 65536. (Pozorovateľ vďaka Jim Belasá.)
  • P. 89, piaty odsek: 2DH by mali byť 29H. Tiež, 1DH by mali byť 19H. (Pozorovateľ vďaka Gerald Vandergrift.)
  • P. 170, tesne pred prvým bullet bod: “zvrhnúť Zasadnutí menu” by mali byť “bring down menu Záložky.” (Pozorovateľ vďaka Cory Piesku.)
  • S. 174, posledný odsek: Konsole musí byť nainštalovaný skôr, môžete otvoriť Kate je terminálové okno, a ja nechcem povedať, snímači ak chcete nainštalovať Konsole do niekoľkých strán neskôr. FYI.
    (Pozorovateľ vďaka Peter Houben.)
  • P. 188, tretí makefile výňatok: parametre sú obrátené. Riadok by mal znieť: “ld -o eatsyscall eatsyscall.o”, ako je popísané na Str 146. (Pozorovateľ vďaka Cory Piesku.)
  • P. 190, štvrtý odsek, sa nepočíta makefile úryvky: “eatlinux.asm” by mali byť “eatsyscall.asm”. (Pozorovateľ vďaka Cory Piesku.)
  • P. 192, číslovaný zoznam bod 7: make-k/r by mala byť make-k\r
  • P. 192, posledný odsek, posledný riadok: /r by mala byť \r
    (Pozorovateľ vďaka Peter Houben, Steve Baker a Gary Albers.)
  • P. 361, Výpis 10-3: dve položky BUFFLEN a Fanúšik definované .bss časť nepatria do zoznamu. Nie sú odkazuje kdekoľvek a môžu byť odstránené. (Pozorovateľ vďaka Francisco Vidaller.)
  • P. 364, textlib.asm zaradenia do zoznamu, koniec DumpChar postup: poradie dve POP pokyny sa zruší. Pop edi linka by mala byť prvý, nasleduje pop ebx linky. Čírou šťastie túto chybu nedokáže prelomiť kód, ale ak sa niečo v hexdump3 mal požadované hodnoty edi alebo ebx byť zachované prostredníctvom hovoru DumpChar, program by bol odsúdený na neúspech. Pevne v online archíve. (Pozorovateľ kredit Gary Albers.)
  • P. 532, podľa Právnej Formy pre JG/JNLE: ZF=0 ALEBO SF=O by mali byť ZF=0 A SF=. (Pozorovateľ vďaka Bogdan Barbu.)
  • P. 536, podľa Právnej Formy: JMP m32 by mali byť označené ako 386+. (Pozorovateľ vďaka Bogdan Barbu.)
  • P. 537, podľa Právnej Formy: LEA r32,m<veľkosť> mali by byť označené ako 386+. (Pozorovateľ vďaka Bogdan Barbu.)
  • P. 555, prvá veta pod Poznámky: “POPA tlačí všetkých 16-bitový univerzálny zaregistruje na zásobník” by mali byť “POPA pops hodnoty pre všetkých 16-bitový univerzálny registre mimo zásobníka a do 16-bit GP registrov.” (Pozorovateľ vďaka Bogdan Barbu.)