Vianoce v ITnetwork sú tu! Dobí si teraz kredity a získaj až 80 % extra kreditov na e-learningové kurzy ZADARMO. Zisti viac.
Hľadáme nové posily do ITnetwork tímu. Pozri sa na voľné pozície a pridaj sa k najagilnejšej firme na trhu - Viac informácií.

2. diel - Inštalácia kompilátora assembleri vo Windows

Už vieme, že ASM ponúka viac možností vývoja. V tomto základnom kurze si ukážeme, ako sa vyvíjajú moderné aplikácie v assembleri pre Windows a tiež 16-bitové aplikácie používajúce priamo len služby BIOSu. Uvidíte, ako čo funguje, a ďalej budete môcť nadviazať ďalším kurzom pre už špecifickú platformu. Bez nakouknutí by ale voľba nebola tak jednoduchá a preto si skúsime oboje.

V dnešnom ASM tutoriálu si pripravíme vývojové prostredie pre náš prvý ASM program pre Windows. Program v assembleri môžeme napísať v ľubovoľnom textovom editore a potom jednoducho skompilovať z príkazového riadku. Pokiaľ ho ale budeme chcieť ladiť, budeme k tomu potrebovať nejaké vývojové prostredie (IDE). V tomto kurze budeme používať Visual Studio.

Inštalácia Visual Studia

Visual Studio je profesionálny nástroj od Microsoftu, ale na výučbu si môžeme zadarmo stiahnuť verziu Community. Pri inštalácii sa ponúka sady funkcií pre vývoj webových aplikácií, mobilných aplikácií, Azure a vývoj aplikácií pomocou .NET, ale to nebudeme v tomto kurze potrebovať. Pre assembler nám stačí vybrať len Vývoj desktopových aplikácií pomocou C ++.

Ak chcete ušetriť miesto na disku, môžete v pravej časti zrušiť niektoré voliteľné komponenty. Nebudeme potrebovať MFC, ATL, CMAKE a už vôbec nie Live Share.

AsmDude

Po úspešnej inštalácii Visual Studia si ešte môžeme pridať rozšírenie z menu Extensions -> Manage Extensions. Pre Assembler existuje rozšírenie AsmDude, ktoré vedia zvýrazňovať syntax. Bez neho budú zdrojové kódy čiernobiele. AsmDude bohužiaľ nie je bez chýb. Napríklad nedokáže rozpoznať funkcie Windows a červeno je podtrháva. Ale stále lepšie ako nič.

Inštalácia WinInc

Pri programovaní akejkoľvek zložitejšie aplikácie pre Windows budeme potrebovať hlavičkové súbory. Tie obsahujú deklarácia všetkých systémových funkcií, štruktúr a konštánt, aby sme ich boli schopní používať. Tieto súbory nie sú súčasťou Visual Studia a je nutné si stiahnuť open-source projekt WinInc. Z neho budeme potrebovať iba zložku Include/, uložíme ju napr. Do C:\Program Files (x86)\WinInc\Include.

Inštalácia UASM

Visual Studio síce obsahuje kompilátor MASM, ale ten používať nebudeme. Má totiž problém s kompiláciou WinInc hlavičkových súborov a nevie volať 64-bitové funkcie pomocou INVOKE. Namiesto toho si nainštalujeme UASM, ktorý je kompatibilný s MASM, ale neobsahuje toľko závažných chýb. Naviac je open-source a ako bonus podporuje Linux.

UASM sa nemusí zložito inštalovať. Stačí rozbaliť ZIP archív do ktorejkoľvek zložky na disku (napríklad do C:\Program Files (x86)\UASM\).

V návode na UASM je napísané, že je potrebné nainštalovať Build Customizations Targets. To ale používať nebudeme, pretože nefunguje vo Visual Studiu 2019.

Vytvorenie ASM projektu

Po spustení Visual Studia klikneme na Create a new project. Zvolíme projekt Windows Desktop Wizard (jazyk C ++, platforma Windows, typ Desktop).

Počas vytvárania projektu si ešte musíme vybrať, či chceme Console Application (aplikácie pre príkazový riadok) alebo Desktop Application (okenné aplikácie). Nezabudneme tiež zaškrtnúť Empty project, inak by Visual Studio vygenerovalo C ++ súbory, ktoré nepotrebujeme.

32-bitová vs. 64-bitová aplikácia

Než sa pustíme do programovania, zo všetkého najskôr sa musíme rozhodnúť, či chceme 32-bitovú alebo 64-bitovú aplikáciu. Podľa toho na paneli nástrojov zvolíme x86 alebo x64. Na rozdiel od vyšších programovacích jazykov, ktoré sú nezávislé na procesore (napr. C #, Java), alebo sú ľahko prenositeľné (napr. C ++), v assembleri nie je možné mať spoločný zdrojový kód pre x86 a x64 architektúry. Ak sa teraz rozhodneme pre x86 a za rok budeme chcieť prejsť na x64, budeme musieť všetko ťažko prepisovať. Prvý 64-bitové procesory sa začali predávať v roku 2003 a v tej dobe boli Windows XP. Dnes má 32-bitový operačný systém už len pár percent užívateľov.

Nastavenie debugovania ASM vo Visual Studio

Na paneli nástrojov možno prepínať medzi konfiguráciami Debug a Release. U projektu v assembleri medzi nimi nie je rozdiel, pretože kompilátor assembleri nerobí žiadne optimalizácie. Stačí nám teda používať len jedinú konfiguráciu, treba Debug. Aby fungovalo ladenie, je nutné v Project -> Properties v sekcii Linker / Debugging zvoliť Generate Debug Information optimized for sharing and publishing (/ DEBUG: FULL). Potom v menu Tools -> Options v sekcii Debugging je nutné zaškrtnúť Enable address-level debugging.

Vytvorenie súboru so zdrojovým kódom

Nový súbor do projektu pridáme kliknutím pravým tlačidlom na "Source Files" v Solution Explorer, a potom na Add -> New Item. Ako typ súboru môžeme zvoliť napríklad C ++ File (.cpp), ale v názve súboru musíme príponu zmeniť na .asm. Potom v Solution Explorer klikneme na novo pridaný súbor a zvolíme Properties. Tam uvidíme "Does not participate in build", čo zmeníme na Custom Build Tool. Po kliknutí na tlačidlo Použiť sa v ľavom paneli zobrazí položka Custom Build Tool:

Custom Build Tool - Základy assembleri

Zadáme parametre kompilátora:

  • Command Line - "C:\Program Files (x86)\UASM\uasm.exe" -win64 -Cp -Zi -nologo /I "C:\Program Files (x86)\WinInc\Include" "-Fo$(IntDir)%(FileName).obj" "%(FullPath)". Cesty k UASM a WinInc prípadne zmeňte podľa toho, kde ich máte nainštalované. Parameter -win64 je pre 64-bitové aplikácie. U 32-bitových aplikácií použite parameter -coff. Parameter -Cp nastavuje rozlišovanie veľkých / malých písmen (to je dôležité). Parameter -Zi je nutný pre ladenie. Parameter -nologo vypne zobrazovanie licencie a verzie počas kompilácie.
  • Outputs: $(IntDir)%(FileName).obj. Ak projekt obsahuje viac ASM súborov, je nutné Custom Build Tool nakonfigurovať pre každý z nich. V Roztok Explorer možno nastaviť vlastnosti niekoľkých súborov naraz, keď sa označí myšou s klávesom Ctrl.
Ak by ste niekedy miesto UASM chceli skúsiť tiež MASM od Microsoftu, nebudete musieť nastavovať Custom Build Tool, ale v Solution Exploreri kliknete pravým tlačidlom na projekt a potom v Build Dependencies -> Build Customizations zaškrtnete MASM.

Môžeme hneď na kontrolu skúsiť projekt skompilovať z menu Build -> Build Solution. U prázdneho ASM súboru by sa mal zobraziť error A2099: END directive required at end of file. Ak sa zobrazí iná chyba, potom sú asi zle parametre alebo cesta ku kompilátora.

V budúcej lekcii, Hello world v ASM vo Windows , si vytvoríme prvý jednoduchý program, ktorý zobrazí text "Hello world".


 

Všetky články v sekcii
Základy assembleri
Preskočiť článok
(neodporúčame)
Hello world v ASM vo Windows
Článok pre vás napísal Petr Laštovička
Avatar
Užívateľské hodnotenie:
Ešte nikto nehodnotil, buď prvý!
Autor se věnuje vývoji webových aplikací v ASP.NET a aplikací pro Windows v C++ nebo C#.
Aktivity