Tak uz jsem dlouho necetl tak zavadejici
clanek jako tento o GAS - az mne to donutilo
k napsani teto reakce.
Proc autor pise o necem co bytostne
nesnasi - ja se take nezabyvam psanim recenzi
na Windows :)
Pisatel (a i p. M.Pankrac) by si meli uvedomit,
ze GAS byl navrzen tak, aby syntaxe byla
co nejvice podobna mezi ruznymi platformami -
a Intel sice dnes dominuji na CPU poli ale
tomu tak zdaleka neboli pred xx lety.
Napriklad neni duvod, aby PPC melo jiny format
presunu registru nez Intel.
Zvlaste neznalost autora clanku, ktery primo
a nadrsno pouziva registry v kodu misto
pouzivani zastupnych jmen %1, %2,.. atd
a nechal kompilatoru a optimalizatoru na zvazeni
jak nejlepe rozvrhnout registry - je opravdu
zarazejici.
Nechci tvrdit, ze clanek ma nulovou informacni
hodnotu - ale od pisatele bych minimalne
ocekaval dil druhy, pred kterym si precte
alespon nekolik elementarnich HOWTO a pak
nam radek od radku vyvrati sve polopravdy
(vyhybam se terminu lzi) ze clanku prvniho.
Autor by se mel napriklad seznamit s kodem
ffmpeg-u kde je GAS celkem hojne pouzivan,
aby alespon trochu tusil, jaka sila se za
vlozenym asm pomoci gas-u skryva.
K p. M.P. - jak jste prisel na to,
ze Linux dal svetu nekopatibilni GAS ??
To je asi tak stejne jako kdyz reknete, ze
Linux dal svetu nekompatibilni GUI s Windows.
K te historii... Druha veta na www.gnu.org zni: The GNU Project was launched in 1984 to develop a complete Unix-like operating system which is free software: the GNU system. Tamtez se lze v sekci software/gcc docist, ze verze 0.9 (first beta release) byla vydana, cituji: "March 22, 1987".
Nicmene ano - koreny jsou mnohem starsi a fa Intel je obdobou MS na poli hardware (jen se o tom diky konkurenci AMD prilis nemluvi), takze se v jejim pripade da hovorit maximalne o pseudostandardech.
Intel asm neni standart, Intel asm je nejaky vnitrni predpis jak ma vypadat asm pro jedenu konkretni platformu (x86) uvnitr jedne firmy. Je jen velika smula, ze to vyhrezlo ven a nekteri zabednenci to povazuji za standart, protoze nikdy nic jineho, nez x86 platformu nevideli.
Ano, spletl jsem se, kdyz jsem tvrdil, ze gcc a gas jsou starsi, nez x86 paltforma. Nic to ale nemeni na tom, ze gcc vznikl uplne na jine architekture a da se rict uplne jinem pocitacovem svete nez v te dobe bylo x86. Ix86 asm v ted odbe bylo cosi jednoucelove napsaneho na jeden jediny konkretni procesor a gcc v te dobe melo gas pripravene ne na jeden, ale hned na nekolik procesoru, na kterych se tehdy staveli unixove stroje.
V gas dnes muzete psat kod na procesory v mainframech i na jednocipy. Vysvetlete mi proc by v roce 87 nekdo pouzil nejaky proprietarni standart, ktery byl tehdy jeste navic svazany s minoritni architekturou, na ktere ani zadny poradny unix nebezel, a nepouzil standart AT&T ktery byl prave s unixem svazany a navic nebyl omezeny jen na jednu architekturu? Jo a standart, to neni neco co si vymysli v jedne firmicce, ale to na cem se dohodne aspon par lidi z venku.
V roce 87 Ix86asm nebyl zadny standart, ale AT&T ano, protoze ho v te dobe nepouzivaly lide jen v AT&T a nebyl svazany jen s jednou architekturou. To by lide kolem GNU museli byt pekne uhozeni aby pouzili takovy "standart", to by sli presne opacnou cestou, bylo by to proti jejich prirozenosti.
Ix86asm neni standartem ani dnes, to si muze myslet jen clovek, ktery nikdy neprogramoval nic jineho nez pro PC. Od jednocipu, pres ruzne ne Ix86 CISC, RISC, ruzne transputery az po DSP jsem se setkal s asm, ktery se mnohem vic podobal AT&T nez nejakemu Intel paskvilu a to jsem zacinal programovanim ve strojaku na I8080. Jenze, kdyz opustite svet Intelu, se pred vami rozprostre barevny svet diametralne se lisici od sedi Ix86.
Co mám na to napsat? Napsal jste jako argumenty nepravdivé věci. Já jenom doufám, že jste se poučil.
Programoval jsem pro řadu asm, včetně jednočipů. Každý asm je v podstatě dost jedinečný, nepřenositelný. U každého procesoru se vám skoro vždycky otevře nový svět diametrálně se lišící od jiného procesoru.
Já prostě rozumím tomu, že si programátoři GNU chtěli zjednodušit práci. Pravděpodobně zprznění asm pomocí GNU postihlo více platforem, než jen x86. Chápu důvodu, i když se mi nelíbí. O to víc se mi nelíbí snaha měnit zavedené standardy s tím, že GNU je v podstatě jediný dobrý standard. Shazovat standard, který byl nedopatřením ignorován je věc ve stylu politické manipulace.
Ja odmitam souhlasit, ze gas neco przni. V dobe sveho vzniku nebyl Intel "standart" zadny standart a neni jim ani dnes. gas je pouzitelny na tolika platformach, ze z jeho hlediska je Intel asm na x86 jakasi zmrsenina v okrajove casti jeho zajmu. Chapete aspon, ze tasm/masm od intelu je pouzitelny jen a pouze na Ix86 a tedy jen na IBM PC platforme, chapete, ze je to vlatsne jakasi minortitni implementace a byl by naprosty nesmysl, aby gas prizpusoboval tomuto marginalnimu "standartu". gas zadny asm nemrsi. Ix86asm je proti gas jakysi zmrseny marginalni dialekt a ne naopak.
Mozna, ze dnes je Ix86 ve vsech IBM PC kompatibilnich pocitacich. Jenze proti tomu tu mame embeded zarizeni ve kterych nic takoveho nenajdete, pak tu mame jednoucelova zarizeni s jednocipy, pak tu mame dsp na kartach v PC a v dalsich zarizenich, pak tu mamem PC nekompatibilni s Ix86 (napr Apple), pak tu mame sparc, cray, rs6000, sgi, ... Ja ani nedokazu vyjmenovat aspon podstatnou cast toho kolace jinych platforem na ktery si muzete nejaky Ix86asm "standart" strcit vite kam. A tady vsude je gcc a jeho gas doma.
Prostě si gas vymyslel jiný standard, než existoval, ať už to nazveme jakkoli. Když to shrnu, dostal jsem x argumentů, z čehož více, než polovina nebyly pravdivé. Pokud jsem je vyvrátil, už se o nich nemluvilo. Nemluvím jen o Vás, stačí si projít celou diskusi.
Gas si prostě vytvořil svou společnou syntaxi pro celou řadu procesorů. Bylo to pro něho určité zjednodušení, a určité platformy to odskákaly, protože si pro ně gas vymyslel něco jiného, než se do té doby používalo.
Řeknu Vám to tak, asm není mezi platformami přenositelný, takže si asm z jedné platformy skoro vždycky můžete strčit víte kam na druhé procesorové platformě. Vy to ovšem neřeknete, Vy raději budete pomlouvat architekturu x86. Až napíšete něco v gasu řekněme pro nějaký procesor řekněme PowerPC od Apple a pak jí přenesete beze změny zdrojáku třeba na něco úplně odlišného, pak se s Vámi budu bavit o "přenositelnosti" a řeknu, že nekompatibilita gasu měla oprávnění a hluboce se Vám pokloním a omluvím.
Vy dobře víte, že pro skoro každý procesor musíte napsat zdroják znovu, protože prostě asm přenositelný není.
Rozumím, já jsem si dovolil říci něco, co nesouhlasí s předepsanými názory a tak si to celé můžu strčit vím kam...
Nevim, jestli neumite cist nebo vam to hlava nebere, ale uz nekolikrat tady bylo konstatovano, ze:
1) GAS si nevymyslel syntaxi, pouze prevzal v te dobe rozsirenou a univerzalni syntaxi ATT
2) GAS je predevsim backend pro GCC a v takovym pripade je vyhodny, kdyz je syntaxe shodna nebo velice podobna pro vsechny podporovany CPU
Mam pocit, ze generator kodu v GCC je resenej nejakejma tabulkama a pripadny portovani na jinej CPU by melo bejt relativne jednoduchy. Pokud si ovsem pan Ponkrac usmysli, ze pro x86 architekturu se bude pouzivat syntaxe Intel, pro 68k syntaxe Motorola, pro AVR syntaxe Atmel, pro PPC syntaxe kdovijaka a pro HP PA-RISC reverzni polska notace, zbytecne tim zkomplikujete jednak generator kodu v GCC, jednak syntaktickej analyzator GAS a kdovico jeste.
Muzete to nazvat pohodlnosti, ale ja bych to oznacil za ucelnost.
BTW: Assembler je mezi nekterejma platformama prenositelnej, teda byl by, kdyby se vyrobci shodli na jedny syntaxi - viz treba i8080 a Z80. Programy, ktery jsem napsal pro i8080 si muzu strcit do riti a prepsat je pro Z80, protoze proste syntaxe je jina.
Jistě, že asm ZDROJOVÝ KÓD není mezi platformami přenositelný, ale je daleko lehčí mít v hlavě stejnou SYNTAXI ZDROJOVÉHO KÓDU, a neučit se pro každou platformu jinou. A syntaxí teď nemyslím instrukční sadu daného typu procesoru, ale způsob řazení parametrů a argumentů, jejich označování, ukládání; práce se vstupy a výstupy, atd.. Už to chápete ?
A ještě jedna věc. "Standard" není něco, co si někdo vymyslí a začne prosazovat komerčně, a už vůbec to, co se majoritně používá. Bohužel si nepamatuji definici, ale standard je přinejmenším dokument, který je ZÁVAZNĚ platný pro dané řešení a uznaný standardizační komisí, z čehož vyplývá jeho případná vynutitelnost. Přijde mi, že v této diskusi spousta lidí, Vás nevyjímaje, si pod standardem představuje cosi jiného... Promiňte mi, že toto téma nehodlám dál rozvádět... :)
Myslim si, ze mate pravdu v tom, ze sa Vam tu snazia len ukazat co vsetko je zle vo Vasom clanku. Kazdy kto uz "ovonal" asembler vie aky je. Staci priklad rada intel x51 a PIC. Alebo hocijaky iny typ. Uz len pri x51 pri inom type procesora z tej istej rady, napr. Philips XAG3(presnu radu neviem) je citit mensie odlisnosti. Radsej sa uz nevyjadrujem ku GAS a Intel lebo to uz pomaly zavana flame. Kto nevie stravit informacny obsah Vasho clanku a ocenit cas straveny pri pisani, nech ide ...(pozriet si niekam co mal na obed).howk
Myslim si, ze mate pravdu v tom, ze sa Vam tu snazia len ukazat co vsetko je zle vo Vasom clanku. Kazdy kto uz "ovonal" asembler vie aky je. Staci priklad rada intel x51 a PIC. Alebo hocijaky iny typ. Uz len pri x51 pri inom type procesora z tej istej rady, napr. Philips XAG3(presnu radu neviem) je citit mensie odlisnosti. Radsej sa uz nevyjadrujem ku GAS a Intel lebo to uz pomaly zavana flame. Kto nevie stravit informacny obsah Vasho clanku a ocenit cas straveny pri pisani, nech ide ...(pozriet si niekam co mal na obed).howk
Jen takovouto poznámku, já jsem ten článek opravdu nepsal. Ale upřímně řečeno, článek se mi líbí a myslím si, že autor se upřímně snažil učinit jej srozumitelným pro všechny.
Naopak si myslím, že udělal kouzelnou věc, ukázal, jak mají začínat s asm ti, kteří jsou na něj zvyklí z DOS/Windows.
Já sám za sebe si myslím, že autor podal dobrý výkon.
Jak vite ze GAS nesnasim? Ucel ATT syntaxe chapu, nikde jsem nepsal ze je intel lepsi, je proste jina. Tot vse. Je pravda, ze s GASem nemam zadne zkusenosti, chtel jsem si rozsirit obzory. To vysvetluje ono nepouzivani zastupnych znaku, ale v tomto pripade by se samosebou rychlost nejak nezvetsila.
Nikde jsem netvrdil, ze je GAS na nic. Vidim v nem obrovskou silu jako vy! Dalsi dil urcite nebude. Bruslil bych to tenkem lede.
Me mrzi ze se vam clanek nelibil, mel jen podat ZAKLADNI INFORMACE o GASu pro ty, kteri treba nevedi, ze tady ta moznost je.