Názory ke článku Je Assembler mrtvý? – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu
Reklama
Reklama

Názory ke článku Je Assembler mrtvý? – Programujte.comNázory ke článku Je Assembler mrtvý? – Programujte.com

 

Názory ke článku Je Assembler mrtvý?

Aleš Janda   NOVÝ
10. 12. 2005

Upřímně - myslím, že máš špatný optimalizátor. Rozpoznání toho, kam dát jakou instrukci, aby byla "pipelina" stoprocentně využitá je velice náročný úkon a troufnul bych si tvrdit, že nemožná. Resp. u jednoho cyklu to jde - nakreslit (nebo aspoň představit), kdy která instrukce vstupuje do které fáze, kolik taktů zabere některá fáze dané instrukce, jak se predikuje skok atd.

Ale u programu delšího než 10 instrukcí je to hraní si na Boha :-) Nehledě na to, že takovou "optimalizací" se kód totálně znepřehlední.

kECUB   NOVÝ
11. 12. 2005

Prosimvás jak mam zkompilovat ten kod v assembleru? Jde to v dev-cpp? Mám přilinkovat nějakou knihovnu čico?:) A taky bych se chtěl zeptat proč eXiman pro výpis na obrazovku používá chybový proud?

eXiman   NOVÝ
11. 12. 2005

Aleš Janda -
určitě máš pravdu, u programu delšího 10 instrukcí je to téměř nemožné :). Už o tak s dnešníma kompilátorama je hodně těžké udělat v asm kvalitní funkci která by zrychlovala. Je to takovej článeček proti http://www.blackhole.sk/readme.php?id=203.

Miloslav Ponkrác   NOVÝ
11. 12. 2005

Tak tohle je přesně příklad naprosto zcestného porovnání rychlosti. Přesně takto se to nemá dělat.

Za prvé: Co se použilo za kompilátor C++ a jaké volby? Na tom hodně záleží a zaručuji vám, že dobře nastavený C++ kompilátor od Intelu byste jen těžko překonával assemblerem v rychlosti. Ne nadarmo se rychlostní rekordy dělají právě v Intelském kompilátoru.

Za druhé: Pro 99,9999% případů bude rychlejší dobře přeložený kód v C++, než asm. A to z toho prostého důvodu, že pokud neznáte detailní informace o tom, jak procesor optimalizuje, pak většinou napíšete horší kód v asm, než to, co vygeneruje optimalizátor C++. Málokter

Miloslav Ponkrác   NOVÝ
11. 12. 2005

Tak tohle je přesně příklad naprosto zcestného porovnání rychlosti. Přesně takto se to nemá dělat.

Za prvé: Co se použilo za kompilátor C++ a jaké volby? Na tom hodně záleží a zaručuji vám, že dobře nastavený C++ kompilátor od Intelu byste jen těžko překonával assemblerem v rychlosti. Ne nadarmo se rychlostní rekordy dělají právě v Intelském kompilátoru.

Za druhé: Pro 99,9999% případů bude rychlejší dobře přeložený kód v C++, než asm. A to z toho prostého důvodu, že pokud neznáte detailní informace o tom, jak procesor optimalizuje, pak většinou napíšete horší kód v asm, než to, co vygeneruje optimalizátor C++. Málokterý assemblerista tyhle optimalizační znalosti má, protože to není zase tak triviální věc. Pravda, na několikařádkovém kódu C++ to nepoznáte, ale v běžných programech je to znát.

Za třetí: Kód v C++ a kód v asm není totožný, což považuji za závažnou chybu pro serióznost celého srovnání. Například kód v C++ používá pro přístup k prvkům pole indexy, zatímco asm kód ukazatele. Cyklus for v C++ jede od nuly, zatímco cyklus for v asm jede z druhé strany. Pokud byste přepsal kód v C++ stejným způsobem jako je v asm, byl by kód v C++ nejspíš signifikantně rychlejší, než je teď.

Za čtvrté: I asm kód by šel ještě vylepšit. Například návěští nav na adresu dělitelnou čtyřmi, což by mohlo být trochu rychlejší.

Za páté: Nechápu, proč to měřené času na rychlost se započítávají i funkce pro výpis. To vidím prvně v životě a je to nelogické.

Miloslav Ponkrác   NOVÝ
11. 12. 2005

Málokterý assemblerista tyhle optimalizační znalosti má, protože to není zase tak triviální věc. Pravda, na několikařádkovém kódu C++ to nepoznáte, ale v běžných programech je to znát.

Za třetí: Kód v C++ a kód v asm není totožný, což považuji za závažnou chybu pro serióznost celého srovnání. Například kód v C++ používá pro přístup k prvkům pole indexy, zatímco asm kód ukazatele. Cyklus for v C++ jede od nuly, zatímco cyklus for v asm jede z druhé strany. Pokud byste přepsal kód v C++ stejným způsobem jako je v asm, byl by kód v C++ nejspíš signifikantně rychlejší, než je teď.

Za čtvrté: I asm kód by šel ještě vylepšit. Například návěští nav na adresu dělitelnou čtyřmi, což by mohlo být trochu rychlejší.

Za páté: Nechápu, proč to měřené času na rychlost se započítávají i funkce pro výpis. To vidím prvně v životě a je to nelogické.

--==[FReeZ]==--   NOVÝ
25. 12. 2005

Nebylo by lepsi pouzit pro prohozeni instrukci XCHG ? Vim ze na pentiich je to nejspis dost pomale (chyba v procesoru) ale kdo dnes ma P1 ? Nebo XCHG je snad pomale i na P2 P3 a P4 ?

XCHG ax, bx // nevim zda to funguje v C
XCHG cx, dx // nevim zda to funguje v C

EAX = ax, EBX = bx, ECX = CX to jsou sestnactibitove registry, existuje XCHG pro 32bitove ? Jaky ma nazev?

Dik za odpoved

ssil   NOVÝ
30. 12. 2005

Mohu mít otázku ke 4. bodu? Proč myslíte, že by umístění návěští na adresu dělitelnou čtyřmi mohlo přinést zrychlení?

jeffry-jordan   NOVÝ
5. 11. 2006

Všiml jsem si, že asi máte nějaké vzkušenosti s procesory od Intelu. Programuji zatím jen procesory od Atmelu a chtěl bych přejít na něco výkonějšího jako jsou procesory od Intelu. Jak vlastně programujete tyto procesory? A kde si můžu stáhnout instrukční sady?

Martin   NOVÝ
29. 3. 2007

Myslim si, ze v dnesni dobe je smysl assembleru uplne v nečem jiném a to v tom, že znalost asm umoznuje pochopeni vyssich jazyku a vubec fungování celého PC jako takového. Asm stojí za to umět jen kvůli tomuto, i kdyby ho ten dotyčný neměl nikdy použít.

Gregi   NOVÝ
11. 12. 2007

To Martin: Podla mna sa mylite. Asm je sice uz jeden z okrajovejsich jazykov dnesnej doby, no stale si najde uplatnenie. Jednoznacne ten kto velmi dobre ovlada spracovanie instrukcii procesorom (proc. cas atd.), dokaze takto v asm dosiahnut lepsie vysledky ako v C++, Delphi ... . Pretoze dokaze pre dany problem navrhnut od zakladu lepsie, optimalnejsie riesenie nez mu ponukne (vysroti) napr. C++. Samozrejme kto tieto veci neovlada je prenho lepsie pouzit vyssie programovacie jazyky, kde sa vyhne zasadnym chybam. A este jedno vyuzitie asm. Programovanie pre zariadenia, ktore obsahuju velmi malo pamate je asm najlepsia volba, pretoze tieto programy maju radovo do 10kB zatial co v inych jazykoch to je zvacsa cez 100kB-ove hodnoty ak nie MB :-).

Gregi   NOVÝ
11. 12. 2007

Este take povzdychnutie.
Kde su tie casy, ked program "Hello World" bol na niekolko bytov. Dnes sa defaultne nedostane clovek pod 300kB a pri optimalizacii pod 10kB :-(. Jasne. ved mame GB RAM, TB disky... naco stracat cas s optimalizaciou. Kde ten svet speje, ziadna kvalita, len kvantita to je trend dnesnej doby. Zial :-(

PS: nevyhody asm: neprehladnost, neportovatelnost (nekompatibilita).

alg   NOVÝ
7. 11. 2008

Při překladu adresy. Taky je zarovnávání na fullword celkem dobrá praxe.

Přidej svůj názor

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo e-mailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Reaguješ na příspěvek:
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové názory e-mailem (pouze pro přihlášené)
Sleduj názory ke článku a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.



Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032016 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý