NOVINKA! E-learningové kurzy umělé inteligence. Nyní AI za nejlepší ceny. Zjisti více:
NOVINKA – Víkendový online kurz Software tester, který tě posune dál. Zjisti, jak na to!
Avatar
Imre
Člen
Avatar
Imre:18.11.2016 17:32

Dobrý deň, viete niekto o nejakej dobrej stránke, z ktorej sa dá naučiť assembler od základov? Ďakujem.

 
Odpovědět
18.11.2016 17:32
Avatar
Martin Dráb
Tvůrce
Avatar
Odpovídá na Imre
Martin Dráb:18.11.2016 17:52

Jaký druh Assembleru (jaká architektura)?

Pokud jde o IA32 (v zásadě x86), tak se dá najít docela dost článků zabývajících se crackingem, shellcody, případně vývojem operačních systémů.

Pokud se ccheš Assembler naučit opravdu pořádně, tak bysis měl sehnat manuály k dané platformě – např. různé věci od Intelu (Intel Software Developer Manual či jak se to jmenuje), což je pěkné čtení na hodně dlouhých večerů. A následně si načíst něco o tom, jak do Assembleru překládají překladače – volací konvence atd.

Levnější cesta je začít s tím crackingem/she­llcody a prasit, ale dopadneš pak cca tak, jak se píše zde
http://www.soom.cz/…anualu-Intel

Pokud t zajímá nějaká šílenější architektura (i třeba x64), tak přeju hodně štěstí. Vzhledem k tomu, o kolik víc se tam používají registry místo zásobníku, se s psaní instrukcí stává poměrně horor.

Otázka také je, proč byses chtěl Assembler učit. Na co jej chceš využít. Např. pro x86/x64 je VELMI MÁLO bolastí, kde bys takovou znalost reálně využil. Zdá se, že si hodně lidí myslí, že Assembler je nutný pro psaní ovladačů – ne, není. Pokud nepíšeš specializovanou věc typu hypervizor či zavaděč OS (a i tam je podle mě velká snaha co nejdříve skočit aspoň do Cčka).

U mikrokontrolerů to může být samozřejmě o něčem zcela jiném. Samozřejmě, dá se vyvíjet v Cčku a kdo chce, může si práci ještě zjednodušit Arduinem (zaplatí ale docela brutálním overheadem co se týče využité RAM a ROM). Ale pokud je chceš využít na plech, Assembler je jistá volba. Navíc, u mikrokontrolerů ten Assembler není extra složitý (protože mikrokontrolery nejsou v zásadě složitá zařízení a chovají se +- předvídatelně, což se o složitých CPU říci nedá).

Využít na plech složité procesory z Assembleru dost dobře nejde, protože jsou zkrátka příliš složité a ne vše je dokumentované (samozřejmě, dají se provádět triky typu "napíšu si kus kódu v Cčku, nechám převést do Assembleru a zoptimalizuju tak, jak potřebuju").

Je pravda, že občas je potřeba použít instrukci, která prostě není z jazyka dostupná (CPUID, vektorové instrukce, přístup k privilegovaným registrům procesoru...), ale pro takové případě obvykle existují speciální funkce/makra. Takže z Cčka či jiného jazyka nemusíš nikam odbíhat.

Nahoru Odpovědět
18.11.2016 17:52
2 + 2 = 5 for extremely large values of 2
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 2 zpráv z 2.