Aritmeticko-logické instrukce

Dalšími typy instrukcí jsou aritmeticko-logické instrukce. Aritmetické funkce Mezi aritmetické (matematické) instrukce patří například: sčítání (viz. Sčítačka) odčítání násobení dělení Tyto instrukce provádějí operace nad dvojkovou soustavou. Z kapitoly o celých číslech už víte, že čísla ve dvojkové soustavě lze normálně převést do desítkové soustavy. Matematické operace ve dvojkové soustavě dávají stejný výsledek, jako v desítkové soustavě. Moderní procesory umí stovky dalších matematických funkcí (na dvojkové soustavě) např. pro práci s desetinnými čísly, s vektory a podobně. ...

2 min · 261 slov · Miroslav Thompson

Řídící instrukce: JUMP

Řídící instrukce je schopna změnit tok instrukcí. Nejznámější a nejpoužívanější řídící instrukcí je instrukce zvaná JUMP která přeskočí na tok instrukcí určený adresou této instrukce. Podívejte se na obrázek níže. Odhadnete, kdy program spuštěný na obrázku níže skončí? JUMP instrukce Odpověď: Tento program sám od sebe neskončí a točí se v nekonečné smyčce. Procesor čte instrukce v tomto pořadí: - Instrukce A - Instrukce B - Instrukce C - JUMP 2 - Instrukce B - Instrukce C - JUMP 2 - Instrukce B - Instrukce C - JUMP 2 - ... ⚠️ POZOR!: Parametrem JUMP je adresa v paměti. JUMP tak může skočit v RAM paměti úplně kamkoliv - dopředu i dozadu ale klidně i do úplně jiného seznamu instrukcí, který se v RAM paměti může také nacházet (pokud jsme si ho tam připravili). ...

1 min · 136 slov · Miroslav Thompson

Řídící instrukce: NOP

Instrukce NOP nedělá nic - k tomu je určena. Pro toto “nic” vyplýtvá nějaké nižší množství cyklů. Pro běžného ajťáka je důležité vědět, že instrukce NOP existuje napříč všemi běžnými instrukčními sadami. V tomto návodu se k této speciální instrukci nejspíš jednou nebo dvakrát ještě vrátím, tak ať vás nepřekvapí.

1 min · 50 slov · Miroslav Thompson

Funkce / podrutina

Díky JUMP instrukci je možné definovat funkce. Na úrovni strojového kódu se funkcím říká anglicky subroutine česky podrutiny. Funkce je jednoduše nějaká část instrukcí, která má začátek a konec a kterou lze volat opakovaně. Po zavolání funkce se vrátíte zpět do původního toku instrukcí. Funkce / podrutina Příklad s JUMP instrukcí Podívejte se na obrázek níže. Funkce je umístěná mezi adresami 2 až 10. Funkce / podrutina Na začátku programu funkci volat nechceme, proto ji instrukcí JUMP 11 přeskočíme. Z adresy 1 se dostaneme na adresu 11. Provedou se instrukce na adresách 11, 12, 13 a následně číslo 0000 na adrese 10 přepíšeme na číslo 16 instrukcí MOV 10,16 1 Další instrukcí JUMP 2 vstoupíme do samotné funkce. Ta se začne provádět. Jakmile je celá funkce provedena, vrátíme se instrukcí JUMP 16 zpět tam, kde jsme skončili tj. na adresu 16. Toto je pouze ilustrace, reálné použití instrukce MOV vypadá trochu jinak a může se lišit mezi instrukčními sadami. ↩︎ ...

1 min · 159 slov · Miroslav Thompson

Funkce / podrutina 2

V minulém díle jsem pojmenoval, co je funkce / podrutina a ukázal jsem, jak taková podrutina může být vyrobena díky JUMP instrukci. Tvůrci softwaru už dávno přišli na to, že je mnohem lepší pracovat s konceptem funkcí které mají vstupní a výstupní parametry. Příklad Funkci si lze představit jako nějaký stroj. Když do něj nasypete tak podle toho něco vyprodukuje. Matematická funkce. Zdroj: Wikipedia Jednoduchým příkladem je funkce SEČTI která má 2 vstupní parametry - první sčítanec, druhý sčítanec - a 1 výstupní parametr - součet. Zápis funkce s dosazenými hodnotami vypadá takto: ...

1 min · 139 slov · Miroslav Thompson

Anatomie definice funkce/podrutiny

Pro vysvětlení anatomie definice funkce/podrutiny použiju příklad 7 = SEČTI(3, 4) z minulé kapitoly. Definice funkce je jenom takový lidský zápis díky kterému hned poznáte: název funkce kolik má vstupních parametrů. Jednotlivé parametry jsou oddělené čárkou co je výstupem funkce Definice funkce Vstupní parametry Vstupní parametry náleží k definici funkce. V příkladu SEČTI na obrázku výše to jsou sčítanec1 a sčítanec2. ⚠️ Funkce může mít libovolné množství vstupních parametrů ale také nemusí mít žádný vstupní parametr. ...

1 min · 156 slov · Miroslav Thompson

Anatomie volání funkce/podrutiny

Volání funkce je konkrétní použití funkce s konkrétními dosazenými hodnotami (pokud jsou nějaké). Pro vysvětlení anatomie volání funkce/podrutiny použiju příklad 7 = SEČTI(3, 4) z minulé kapitoly. Volání funkce Vstupní hodnoty V příkladu SEČTI to jsou hodnoty 3 a 4. Také lze říct, že: 3 je hodnota parametru “sčítanec1” 4 je hodnota parametru “sčítanec2” Vrácená hodnota V příkladu SEČTI to je hodnota 7. Také lze říct, že funkce SEČTI vrátila 7. ...

1 min · 81 slov · Miroslav Thompson

Příklad v instrukcích

Představte si, že programujete napřímo na nějakém studentském procesoru 1, kde pro sečtení dvou čísel musíte zavolat 3 různé instrukce za sebou: ADD_A, ADD_B, ADD_C. Váš program potřebuje sčítat čísla celkem často a tak je nutné pro sečtení čísel napsat funkci. Příklad funkce v instrukcích Na začátku programu přeskočíme samotnou funkci, program začíná na adrese 0x09 Na adrese 0xC8 potřebujeme sečíst 2 čísla, která máme připravené na adresách 0xEA a 0xEB. [0xEA]: 00000011 = 3 [0xEB]: 00000100 = 4 Číslo z adresy 0xEA uložíme na adresu 0x01 což je první parametr sčítací funkce. Číslo z adresy 0xEB uložíme na adresu 0x02 což je druhý parametr sčítací funkce. Ze sčítací funkce se ale musíme pak dostat zpět. Sčítací funkci tedy ještě sdělíme, že po uložení výsledku musí pokračovat na adrese 0xCB. Toto je pouze vymyšlený příklad. Jak se funkce/podrutiny v moderních počítačích tvoří se dozvíte v následujících kapitolách. ↩︎ ...

1 min · 147 slov · Miroslav Thompson

Calling convention

V předchozích kapitolách o podrutinách / funkcích jsem uvedl příklady, jak lze dělat podrutiny nebo funkce se vstupními/výstupními parametry jen s pomocí JUMP instrukce. Je nutné ale zdůraznit, že šlo pouze o ukázkové příklady. V moderních procesorech lze stejného výsledku dosáhnout obrovským množstvím jiných způsobů. Z tohoto důvodu existují calling conventions neboli volací konvence. 📜 Co je volací konvence? Každá instrukční sada obsahuje víc než jednu volacích konvencí. Volací konvence je jinými slovy soubor pravidel které určují, jaké instrukce se mají používat a jakým způsobem pro: ...

2 min · 248 slov · Miroslav Thompson

Řetězení funkcí/podrutin

Podrutiny/funkce lze libovolně řetězit. Jakmile zavoláte jednu funkci, tato funkce může zavolat další funkci, a tak dále. V moderních procesorech se u některých aplikací funkce mohou řetězit klidně až na tisíce funkcí. Níže je zpomalená ilustrace řetězení funkcí v nějakém jednoduchém programu. Řetězení podrutin

1 min · 44 slov · Miroslav Thompson