Programovanie v assembleri vo Windows x64 (x86-64): Rozdiel medzi revíziami

Smazaný obsah Přidaný obsah
Fabcde (diskusia | príspevky)
Revízia 19350 používateľa Fabcde (diskusia) bola vrátená
Fabcde (diskusia | príspevky)
Bez shrnutí editace
Značka: editor wikitextu 2017
Riadok 127:
mov ecx, 0 ; 1. param _In_ UINT uExitCode UINT je 32 bit aj v 64 bitovom prostredi
call ExitProcess
</syntaxhighlight>vynuluje obsah registra ECX a ukončí program. Jediným argumentom funkcie ExitProcess (uložený v registri ECX) je exit code programu.<br />
 
'''Výpis 2''' HelloWorld.s (Verzia pre GAS):<syntaxhighlight lang="gas" line="1">
Riadok 181:
</syntaxhighlight>Výsledok:<syntaxhighlight>
G:\>dir
15.07.2017 15:32 2  200 HelloWorld.s
16.07.2017 12:48 584 HelloWorld.o
16.07.2017 12:48 1  536 HelloWorld.exe
 
G:\>HelloWorld.exe
Riadok 346:
</syntaxhighlight>inštrukciou<syntaxhighlight lang="nasm" line="1" start="47">
xor ecx, ecx ; 1. param _In_ UINT uExitCode UINT je 32 bit aj v 64 bitovom prostredi
</syntaxhighlight>Je to pokus o optimalizáciu kódu, kedže inštrukcia xor ecx,ecx tiež vynuluje obsah registra ECX, ale po preložení zaberá menej bajtov. Optimalizácia kódu je však dnes kvôli prúdovému spracovaniu inštrukcií ([[w:cs:Pipelining|pipelining]]), hypertredingu, cache pamäti, atď mimoriadne zložitá a vyžaduje hlboké znalosti. Spravidla dobrý kompilátor/optimalizátor jazyka C dokáže vytvoriť rýchlejší kód než hoci aj kratší ale neoptimalizovaný kód v jazyku symbolických adries.<ref>https://www.zive.cz/clanky/vyznejte-se-v-procesoru--velky-prehled-technologii/historie-procesoru-cache-a-skalarni-procesory/sc-3-a-147124-ch-66129/default.aspx#articleStart</ref><ref>http://frdsa.fri.uniza.sk/~janosik/Kniha/Prudove_sprac.html</ref><ref>https://forum.root.cz/index.php?topic=2388.0</ref><br />
 
'''Výpis 4''' HelloWorld.s (Verzia pre GAS):<syntaxhighlight lang="nasm" line="1">