Hlavní navigace

Názory k článku Když céčko nestačí: GAS

  • Článek je starý, nové názory již nelze přidávat.
  • 25. 2. 2003 7:27

    kvr (neregistrovaný)

    Nutno podotknout, že v čistém assembleru voláte přímo služby operačního systému, jejichž čísla musíte zkrátka znát nebo použít sadu maker
    --
    Nesmysl, lze pochopitelne volat jakekoli funkce vcetne syscall-wrapperu z libc.
    Ad makra - v takovem pripade je dobre pouzit priponu .S, coz znamena assembler s preprocesorem.

  • 27. 2. 2003 0:16

    kedluben (neregistrovaný)

    Bohuzel musim varovat vsechny, kteri by chteli cist nasledujici thread. Ponkrac je tezky demagog, ktery v jinych diskusich (treba na Zive :) za kazdou cenu obhajuje sva problematicka stanoviska i tehdy, kdy to podle mne opravdu nema smysl. Kompatibilita assembleru v jeho podani je podle meho nazoru zastupny problem - myslim, ze jde spise o snahu za kazdou cenu prinutit oponenty, aby pristoupili na jeho vlastni pojmovou soustavu a akceptovali jeho nazory. Pokud byste vsak chteli nasup: bezte na Zive, vyberte Rozsirene hledani a v auditoriich hledejte jeho jmeno :)))

  • 27. 2. 2003 16:03

    Miloslav Ponkrác (neregistrovaný)

    Děkuji za jasné vysvětlení Vašeho stanoviska. Vidím, že jste podělaný až za ušima z toho, že by si někdo mohl přečíst něco ode mě. Bojíte se, že bych mohl vyjádřit stanovisko? Že by to někdo mohl číst, a nedejbože!, se mnou třeba i jen trošičku souhlasit? Díky, zvedl jste mi sebevědomí, někdo se mě a mých názorů bojí! A to si ještě představte, že já se nebojím podepsat pod svým plným jménem na rozdíl od Vás, který napadáte anonymně! A dokonce se nebojím ani cizích názorů. Vím, že se mnou třeba nebudou lidé vždy souhlasit, ale tak je to v pořádku. Být vše na Vás, neexistovalal by svoboda slova, a snažil byste se udělat vše pro to, aby neexistovaly jiné názory, než jeden oficiální, a to je Váš.

  • 27. 2. 2003 17:46

    kedluben (neregistrovaný)

    No, tak jeste par slov. Vase prispevky mi pripadaji otravne z toho duvodu, ze jedina jejich diskutabilni hodnota spociva v opakovanych vyronech vaseho narcistniho ega. Tvrdim, ze jste demagog, a mohu to snadno dolozit - treba na tomto vasem prispevku. "Vidím, že jste podělaný až za ušima z toho, že by si někdo mohl přečíst něco ode mě" - ale kdezpak, vzdyt podle jinych vasich slov vam delam reklamu a PR. Jestli to nebude spis tak, ze uz me unavujete. "Bojíte se, že bych mohl vyjádřit stanovisko? Že by to někdo mohl číst, a nedejbože!, se mnou třeba i jen trošičku souhlasit?" Myslim, ze je vam jasne, ze jsou mi vase nazory lhostejne; irituje me hlavne vas zpusob jejich prezentace. "Být vše na Vás, neexistovalal by svoboda slova, a snažil byste se udělat vše pro to, aby neexistovaly jiné názory, než jeden oficiální, a to je Váš." Ale jdete, na ruznosti nazoru nevidim nic zleho a vase tvrzeni nelze z meho prispevku nijak vydedukovat. Rekl jsem pouze tolik, ze podle nazoru meho prezentace nazoru vasich nestoji ani za cteni. Takze trikrat v kratkem prispevku mi podsouvate neco, co netvrdim a nedelam - tomu ja rikam demagogie. A jelikoz k vam opravdu zadnou naklonnost necitim, nedivte se, ze vam nesdelim zadnou svou e-mailovou adresu. Sbohem pane.

  • 28. 2. 2003 12:56

    Miloslav Ponkrác (neregistrovaný)

    Vážený pane, myslím, že si sám nerozumíte. Pokud by Vám byly moje názory opravdu lhostejné, jednoduše byste je ignoroval. To jste ovšem neudělal. Vy jste ovšem cítil potřebu mě umlčet a zesměšnit, to klidně dělejte, jestli to nutně potřebujete ke svému klidnému spánku a jestli Vás to uklidní. Na druhé straně tím lhostejnost opravdu nedokazujete.

    Přečtěte si jakýkoli můj příspěvěk a kromě reakce na Vás jsem vždy argumentoval pouze s argumenty, nikdy jsem se nezmínil ani slovíčkem o autorovi příspěvku. Projděte si mé názory kde chcete, na Živě, na Zvědavci, v AbcLinuxu, na Technetu i jinde.

    Jste první, kdo mě donutil mluvit přímo o osobě autora příspěvku, protože vlastně Váš příspěvek neobsahoval nic konstruktivního.

    Jinak jsem samozřejmě mluvil o tom, že já své názory hlásám pod svým pravým jménem. Vy se mě snažíte napadat anonymně. Jest to Vaše právo být anonymní a Vaše volba. Nikdy jsem po Vás žádnou mailovou adresu nechtěl, co bych s ní dělal?

  • 27. 2. 2003 16:07

    Miloslav Ponkrác (neregistrovaný)

    Jinak samozřejmě děkuji za reklamu. Jen málokomu se naskytne, aby někdo šel a vyhledával mé názory třeba na Živě. Opravdu děkuji moc, budu teď psát ještě raději. Člověče, já más fakt mám doopravdy rád. Vy mi ještě uděláte image a public relation! A to zcela zdarma. Až budete potřebovat oplátku, ozvěte se!

  • 25. 2. 2003 8:40

    Miloslav Ponkrác (neregistrovaný)

    Nemám žádné zkušenosti s asm pod Linuxem, zato mám bohaté zkušenosti pod DOS/Windows, i jinými neintelovskými procesory. Tento článek je prakticky první o asm pod Linuxem. Je napsán dost zasvěceně, děkuji moc.

    Celé to na mě budí dojem, že gas je tak trochu nechtěné dítě. Že byl prostě nějak udělán, protože byl potřeba pro překladače Céčka, a nejspíše bylo málo času. Takže se nekontrolovala pořádně syntaxe, předpokládalo se, že překladač C vygeneruje správnou syntaxi. Nikomu se s tím nechtělo moc párat. Protože byl pravděpodobně k dispozici nějaký kus kódu, který se dal pro gas použít a používal AT&T syntaxi, rozhodli se tvůrci, že raději vyrobí novou nekompatibilní syntaxi pro intel asm pro Linux, jen aby proboha už měli překladač asm z krku a hotový.

    Zhruba to, co jsem uvedl výše jsem si dal dohromady mezi řádky z tohoto článku. Nejspíše opravdu není dobré v asm pod Linuxem pracovat.

  • 25. 2. 2003 9:23

    anonymní

    Gas ma naozauj sluzit ako generator kodu pre gcc, so samostatnym pouzitim sa moc nepocitalo. Naco robit kontroly, ktore zbytocne spomaluju kompiler, ked to aj tak v 99.99999% pripadoch netreba?

    Pokial chces pouzivat assembler s Intelovskou syntaxou, tak:
    - pouzi iny assembler, je ich hafo - napr. nasm.
    - pouzi novsie binutils, novy gas vie intel syntax.

  • 25. 2. 2003 10:06

    Miloslav Ponkrác (neregistrovaný)

    Nasm jsem už zkoušel, tedy pod Windows. V zásadě jsem došel k závěru, že toho moc neumí, a vysvětluje to tím, že je to jeho filozofie. Ne, že by se v něm nedalo psát, ale oproti plnohodnotnému masm/tasm je to v podstatě kripl. A používat jej by byl pro mě krok zpět.

  • 25. 2. 2003 10:13

    Miloslav Ponkrác (neregistrovaný)

    ...Naco robit kontroly, ktore zbytocne spomaluju kompiler, ked to aj tak v 99.99999% pripadoch netreba?

    V tom případě je to ale třeba jasně říci, že gas není určen na ruční programování v assembleru a vytvořit pro ruční tvorbu v assembleru vhodnější nástroj, než je gas.

    Mimochodem, MS se předhazuje, že se nedrží standardů a volí si nové, nebo przní současné. A na druhé straně Linux provedl naprosto to samé s tím, že nedodržel standard asm syntaxe pro Intel procesory a vytvořil nový "rádobystandard" pro asm syntaxi.

    Otázkou je, zda gas pro "nalepení" konečně standardní Intel syntaxe také nalepil pořádné kontroly. Otázkou také je, jak je to u gas s makry, pokud má být gas hlavně pro C překladač. Dle mého by bylo dobré odhodit gas jako nepovedený pokus a naprogramovat kompilátor asm pro Linux konečně pořádně.

  • 25. 2. 2003 10:47

    kato (neregistrovaný)

    "na druhé straně Linux provedl naprosto to samé s tím, že nedodržel standard asm syntaxe pro Intel procesory a vytvořil nový "rádobystandard" pro asm syntaxi."

    Obecne pouzitelny linuxovy asembler nemuze mit intelovskou syntaxi, protoze gcc i linux bezi i na architekturach, ktere vyzaduji konstrukce, ktere by v klasickem intelovskem asembleru nesly napsat. Vlastni syntaxi nikdo nevymyslel, bylo vyhodnejsi pouzit proste AT&T syntaxi. Je ovsem pravda, ze gas neni (ani se tak netvari) nijak komfortni. Na druhou stranu funguje a to je asi pro gcc rozhodujici (treba o nasm a nekterych verzich tasm se to bohuzel tvrdit neda -- komfort prinasi komplexitu a ta chyby...)

  • 25. 2. 2003 11:41

    Miloslav Ponkrác (neregistrovaný)

    Assembler nikdy nebyl přenositelný a celkem se očekává, že na jiných architekturách bude i jiná instrukční sada a trochu jiná syntaxe.

    To jest Linuxový assembler prakticky neexistuje, asm se liší pro jednotlivé procesory. A Linux do toho prostě zavedl hokej, nechtělo se mu dodržovat zavedený standard.

    Asembler proste vzdy je a bude platformově závislý, při přenosu na jinou architekturu je obvykle nutné asm kód přepsat. Pokud Vaše srdce žádá obecnou přenositelnost, je logické, že nebudete v asm psát. Z tohoto hlediska považuji za nesmyslný argument přenositelnost asm na jiné platformy.

    Rád bych jenom věděl, jakéžeto asm konstrukce nejdou v intelovské syntaxi napsat. Vše, co je na platformě x86 v asm možné pomocí intelovské syntaxe napíšete.

    Co se týká chyb, já si absolutně nedělám iluze o kvalitách překladačů firmy Borland. Přesvědčil jsem se mnohokrát, že je to spíše beta produkt a pokud můžu, utíkám od nich. Nicméně argument, že v určité verzi program nepracuje dobře, takto můžete vygumovat 100% programů a utilit.

    Komfort přináší komplexitu a ta chyby => prostě máme tady gas, není nic moc, ale funguje. Že nefunguje lépe, ničeho lepšího nejsme schopni, co se dá dělat, uděláme z toho z nouze ctnost a nějaké ty argumenty se vždycky najdou.

  • 25. 2. 2003 13:03

    MIroslav Kokrda (neregistrovaný)

    Zdravicko,

    nebudte demagog, nebo aspon ctete poradne co psal oponent.

    Kdyz rikate:
    Vše, co je na platformě x86 v asm možné pomocí intelovské syntaxe napíšete.

    Tak sebe sama usvedcujete z nepozornosti, protoze reagujete na vetu:
    ... protoze gcc i linux bezi i na architekturach, ktere vyzaduji konstrukce, ktere by v klasickem intelovskem asembleru nesly napsat.

    Cili, se bavime o JINYCH architekturach nez je Intel a x86 ...

    Toz tak ...

  • 25. 2. 2003 13:34

    Miloslav Ponkrác (neregistrovaný)

    Ale taky jsem napsal: Z tohoto hlediska považuji za nesmyslný argument přenositelnost asm na jiné platformy. Tedy pozorný jsem, ale argument prostě neuznávám.

    Každá platforma má svůj asm a jinou instrukční sadu. Naprosto nechápu, proč bych měl tedy jako důvod uznávat jiné platformy, než Intel a x86. Assembler z jiných platforem je prostě nepřenositelný. Když jsem dělal v assembleru Motoroly, byla syntaxe o dost bližší syntaxi gasu. Ale prostě Intel a x86 má svou syntaxi a programové nástroje by toto měly respektovat. To, co předvedl Linux naprosto zbytečné nedodržení již daného standardu. To, co mnozí linuxoví zastánci vyčítají jiným, tedy nedodržování standardů, tady Linux sám provedl.

  • 25. 2. 2003 14:52

    Richard Richter (neregistrovaný)

    Hoci je trochu zbytočné sa hádať o prenositeľnosti assembleru, má KAŽDÝ assembler niektoré podobné črty, napríklad parsing. Samotné konštruovanie inštrukcií je možné realizovať backendom, ktorý je jednoduchší než celý assembler. Konštrukcia vychádza z nejakého medzitvaru, do ktorého sa dostaneme po spracovaní zdrojáku (nevravím, že hneď po prvom). Predopkladám, že napr. intel sytnax je podporovaná nejakou formou frontendu. Skutočne neviem, ako to má gas, ale keď už ste (sme) sa rozbehli do takejto akademickej debaty, tak si princíp backendov a frontendov môžem dovoliť použiť. Keď je jednotná syntax na označovanie registrov, je to ROZHODNE zjednodušenie, ktoré sa prejaví na viacerých platformách. Samotný INTEL má mimochodom nie jeden štandard na písanie inštrukcií (napr. pre 8051 sa pridŕža tradičným zápisom pre jednočipové počítače), existujú aspoň dva spôsoby ako v TASM písať adresy (a ten nekompatibilný s MASM je pritom pre mnohých logickejší), atď... AT&T ma síce raz vyviedlo z miery (študoval som jadro, programovať som neriskoval, nevidím na assembler v unixe osobný dôvod :-) (mimo to jadro teda)), ale nebol problém ju akceptovať. K porušovaniu štandardov alá MS by som to prirovnal možno po veľmi divokej oslave. :-))) (Keď som si pozeral rôzne .s súbory pre rôzne platformy, nebol problém "prepínať" v hlave inštrukčné sady - no jednotná syntax "přišla vhod".)

  • 25. 2. 2003 15:30

    Miloslav Ponkrác (neregistrovaný)

    Tak, jak mi to říkáte, to naprosto chápu. Však jsem to taky naznačil už v mém příspěvku, že si prostě chtěli něco zjednodušit a moc se s tím nepárat.

    Co se týká mezitvarů, to je vnitřní záležitost jakékoholi překladače, ale myslím, že si rozumíme.

    V zásadě mi jde o to, že každé porušení standardu je v zásadě většinou zjednodušení. Otázkou je, zda je to to pravé ořechové jako důvod pro změnu standardů. V tom případě je zahoďme, nechť si každý vymýšlí své změny na TCP protokolu, nechť si každý upravuje X protokol podle svého. Nechť každý překladač C je nekompatibilní se standardem apod..

    Intel má pro platformu x86 asm právě jeden standard, a ten by měl být závazný. Jednočipové počítače jsou jiná platforma. Opakuji existuje právě jeden platný standard daný Intelem pro asm x86, který navíc byl řadu let zažitý. Pak přišel Linux, zdálo se mu naprosto zbytečné dodržovat standard a vymyslel něco úplně jiného. Taková je pravda, ať už se to odůvodňuje jakkoli.

    Řada porušení standardů je rozhodně zjednodušení. TASM, jak píšete také vymyslel kromě standardního MASM módu také tzv. IDEAL mód. Jenomže TASM defaultně pracuje ve standardním MASM módu a do IDEAL jej musíte speciálně přepnout. Zatímco Linux světu daroval naprostou nekompatibilitu v asm na x86 a dlouhá léta nešlo vůbec standardní tvar asm vůbec používat.

    Mluvíte o tom, že porušení asm standardu Linuxem byste s MS přirovnal pouze po divoké oslavě. Díky tomuto porušení standardu bylo dlouhou dobu nutné držet dvě verze asm na stejnou platformu. V podstatě zjednodušení pro překladač, ale určitě ne pro pisatele v asm.

    A po vyzkoušení několika převodních utilit mohu potvrdit, že neexistuje žádný nástroj, který by dokázal bezchybně převést standardní intel syntaxi na AT&T syntaxi. Žádný nástroj pro převod nebylo těžké zamotat již velmi jednodudchými konstrukcemi.

  • 25. 2. 2003 17:02

    Pichi (neregistrovaný)

    Co to tady stale motate za Intel standart? gcc neni Linux.

    gcc je GNU Compiler Colection a tedy je to vysledek GNU projektu. To GNU je GNU is Not Unix. GNU projekt vznikl davno pred vznikem Linuxu. GNU projekt vznikl v dobe, kdy se Intelu jeste ani nesnilo o x86 architekture a tedy v dobe, kdy jeste neexistoval zadny Intel TASM/MASM a podobne sragory. Jedna z prvnich veci pod GNU bylo prave gcc. Zajimalo by me proc Intel nedodrzel standarty AT&T potazmo gas?

    gas vzniknul v dobe, kdy jeste x86 platforma neexistovala a nebyl vubec zadny duvod se zajimat o nejaky Intel standard, kdyz v te dobe jeste bud neexistoval a nebo jen nekde na papire a v hlavach techniku Intelu. gcc a gas ma zasebou mnohem delsi historii nez cela x86 architektura a i po jejim vzniku hlavni proud vyvoje gcc/gas bezel v uplne jinem svete nez Ix86 a jeste dlouho po te co vznikl Linux zustal hlavni proud vyvoje gcc/gas mimo tuto platformu a jen tezko rict jestli vubec dnes uz teziste vyvoje gcc je na Ix86.

    Prosim Vas, proberte se a vrate se do reality. Vratte se z Wintel sveta, do sveta skutecnych pocitacu a skutecnych OS.

  • 26. 2. 2003 9:08

    Miloslav Ponkrác (neregistrovaný)

    Protože Intel vyrobil první procesory x86, tak pro něj sám zvolil asm, který se tím de facto stal standardem pro x86. Ono už to tak nějak bývá, že výrobce procesoru určí syntaxi asm a instrukční sadu. To je skutečná realita.

    Proč GNU třeba nevymyslelo nové, nekompatibilní Céčko? Apod..

    Ne ne, vy se proberte, a vraťte se do reality. Jestliže je jednou určen standard pro x86, který určí výrobce procesoru, tak by měl být závazný a platný.

    A jen tak mimochodem, první procesor z řady x86 vznikl roku 1978, kde byl mimo jiné ustanoven i standard syntaxe. Projekt GNU byl podle stránek gnu.org založen roku 1983, takže alespoň si ověřte fakta, než začnete tvrdit, cituji: "GNU projekt vznikl v dobe, kdy se Intelu jeste ani nesnilo o x86 architekture".

    První zmínky o GCC jsem našel z roku 1987. Přesněji se mi to nepodařilo nalézt.

    Takže pokud realita podle Vás jsou fakta vycucaná z prstu, tak o takovouto realitu opravdu nestojím.

  • 26. 2. 2003 9:28

    anonymní

    Prvy 32-bitovy procesor x86 pochadza z roku 1985. GNU aplikacie na 16-bitovych procesoroch nespustite, bodka.

  • 26. 2. 2003 9:57

    Miloslav Ponkrác (neregistrovaný)

    Platforma x86 vznikla v roce 1978. Tečka. Není pravda, že všechny GNU aplikace nepoběží na 16-ti bitových procesorech. Tečka. A stále GCC vzniklo až po existenci 32-bitového procesoru 80386. Tečka.

  • 26. 2. 2003 10:24

    Pichi (neregistrovaný)

    Neni pravda, ze v dobe vzniku gcc byl nejaky Intel x86 standart, byl to "standart". Tecka. Gcc pouziva standart, ktery je standart na jinych platformach, nez jsou nejaky IBM PC. Gcc pouziva standart, ktery je standartem na desitkach jinych architektur. Gcc nemuze byt vazane na jednu obskurni proprietarni architekturu jedne obskurni firmy. Tecka.

  • 26. 2. 2003 11:35

    Miloslav Ponkrác (neregistrovaný)

    GCC si zavedlo svůj pseudostandard. Tečka. Asm je vždy vázán na proprietární architekturu, ať je od jakékoli firmy. Tečka.

  • 26. 2. 2003 17:14

    anonymní

    GNU si zaviedli svoj "vlastny pseudostandard", ktory sa z historickych dovodov nazyva at&t syntax.

    Asm nie je vzdy viazany na konkretnu platformu, ale ma mnoho spolocneho na rozlicnych platformach. Instrukcie ako "mov reg, mem" (x86) alias "ld reg, mem" (ppc) je mozno urobit len obmedzenym mnozstvom sposobov.

  • 26. 2. 2003 22:28

    pharook (neregistrovaný)

    Tak ještě jeden pohled na věc.

    Došlo tady někde i ke srovnávání s M$ a jeho pseudostandardy. Ano, zlobím se na M$, že vytvořilo svůj formát dat, který byl dlouhou dobu nedokumentovaný, a i dnes je natolik vázaný na platformu, že je velmi obtížné, ne-li nemožné ho kompletně a správně implementovat.

    Assembler jako programátorský nástroj, vázaný na hardwarovou platformu je jistě dobré standardizovat a standardu se držet. Nicméně netlačíme gas a as někam, kam původně vůbec nepatřil, a z velké části nepatří ani dnes?

    gas byl původně navržen a vyvinut jako mezivrstva mezi programovými bloky jednoho projektu - gcc. Takové na něj byly i požadavky - měl být v rozumných mezích čitelný člověkem pro debugging výstupu gcc, měl být snadno generovatelný z RTL gcc, a snadno parsovatelný (proto i požadavek na jednoprůchodový parsing), a měl být v širokých mezích platformně nezávislý, tak jak mělo být nezávislé i gcc.

    as ovšem začal být mnohými programátory používán jako assembler (k čemuž nebyl původně určen, původně byl jen člověku čitelným mezistupněm interakce mezi dvěma programy jednoho projektu), ano, bezpochyby i proto, že jiný použitelný assembler v té době neexistoval.

    Mnoho lidí ho od té doby používá. Pak se objevili tvůrci nasm, vytvořili jeho port pro unixy (nebo jen pro linux? To nevím), čímž se zaplnila i zmíněná mezera - proč by měl projekt GNU překopávat něco, co svému původnímu a primárnímu účelu (tedy meziprocesové komunikaci) slouží velmi dobře?

    Nehledě na to, že to nyní, když se ukazuje, jaká je obliba as i mezi "lidskými" programátory, nakonec i dělá.

    A co se týče srovnání s M$... as byl od svých začátků detailně dokumentován, nedá se tedy příliš považovat za uzavřený formát. Dle mého názoru ho ale nelze považovat - v hranicích, které jsou jeho primárním cílem - za nestandard.

  • 27. 2. 2003 15:45

    anonymní

    Ano, s tímto skoro úplně souhlasím. Gas prostě jako mezivrstva, která se neměla používat pro ruční programování, to beru. Potom souhlasím i s tím, že ho nelze, a zde je důležitá vsuvka, v hranicích svého určení, považovat za nestandard. Pokud přijmu, že má být vnitřním formátem pro překlad, pak O.K..

    Pak se ale neměl stát ani nástrojem pro on-li asm.

  • 26. 2. 2003 17:10

    anonymní

    Platforma x86 mohla vzniknut v '78, ale to neznamena, ze bola pouzitelna. Nebavime sa tu ani o 8080, Z80, ani 8008. Pouzitelnou sa stala az objavenim 80386. A urcite v roku 1985, vsetci ludia co pracovali na GNU projekte, sa ponahlali vyhodit svoje DECy a Suny, len aby si mohli kupit procesor, ktory sa rozsiril az zaciatkom devatdesiatych rokov.

    Ked sa uz bavime o 16-bitoch a GNU aplikaciach, tie su urcene len pre 32-bit a vyssie. Tie, ktore bezia v DOSe (djgpp) pouzivaju extender (go32), a bezia v 32-bitoch tiez. Nie, ze by nenarazali na ine obmedzenia, vsak ano (napr. 8+3).

  • 27. 2. 2003 15:46

    anonymní

    Platforma x86, a to použitelná vznikla v roce 1978. Ve skutečnosti vznikla dříve, ale tehdy se dala na trh se vším všudy. Použitelná byla okamžitě.

    Myslím, že sám chápete, že Z80 ani 8080, atd. není platforma x86.

    80386 přinesla pro platformu 32 bitů, nic více a nic méně.

    Jinak nesmíte rozšíření platformy x86 datovat podle toho, kdy se rozšířil v Čechách, to zajisté také chápete.

  • 28. 2. 2003 8:03

    Pichi (neregistrovaný)

    Clovece, slysel jste nekdy o 8086? Copak asi tak znamena x86? Jste si jistej, ze x86 je 32bitova architektura a byla ji hned od zacatku v roce 78? Jste si jitsej, ze mate mozek?

  • 26. 2. 2003 17:01

    anonymní

    Uvod z "info gas":

    The GNU Assembler
    =================

    GNU `as' is really a family of assemblers. If you use (or have used) the GNU assembler on one architecture, you should find a fairly similar environment when you use it on another architecture. Each version has much in common with the others, including object file formats, most assembler directives (often called "pseudo-ops") and assembler syntax.

    `as' is primarily intended to assemble the output of the GNU C compiler `gcc' for use by the linker `ld'. Nevertheless, we've tried to make `as' assemble correctly everything that other assemblers for the same machine would assemble. Any exceptions are documented explicitly ( Machine Dependencies). This doesn't mean `as' always uses the same syntax as another assembler for the same architecture; for example, we know of several incompatible versions of 680x0 assembly language syntax.

    Unlike older assemblers, `as' is designed to assemble a source program in one pass of the source file. This has a subtle impact on the `.org' directive ( `.org' Org.).

    ------------
    K nasm: Pozor na verziu! Vsetky maju verziu 0.98.nieco, pricom to nieco je dolezite. V sucasnosti je mozne pouzivat preprocesor, proti ktoremu mali autori kedysi velke namietky.

  • 25. 2. 2003 16:50

    GF (neregistrovaný)

    A ked bude funkcia int f(int a,int b)__attribute__((regparm(3))),bude povezdme v EAX or ECX or EDX adresa na vysledok? ( or myslim alebo nie operator )

  • 26. 2. 2003 0:59

    petrs (neregistrovaný)

    Podle konvence (nezavisle na tom, je-li to fastcall, nebo ne) je navratova hodnota ulozena 'vzdy' v eax. (pro float, double, nebo 64-bit je to trosku jinak).
    Tim __attribute__((regparm(3)) (3 je u x86 maximum) se jenom rika, aby se prvni tri predavane argumenty predaly pomoci registru (ono to zase muze byt slozitejsi, ale pro zjednoduseni to tak muzeme rict) a to poradi je uz napevno dane fastcall konvenci, tj. u gcc eax, ecx, edx. Kdyz jich predavas mene, nevadi... kdyz vice, zbytek se preda pres zasobnik.

  • 26. 2. 2003 19:57

    GF (neregistrovaný)

    Pytam sa pretoze v Delphi je to tak.Inac bacha teda na nasm pretoze ten float hodnoty nechava v ST0

  • 26. 2. 2003 9:28

    Michal Ludvig (neregistrovaný)

    Pouzijte AMD Hammer ;-)
    Tam je primo v ABI napsano, ze parametry se pokud mozno predavaji v registrech.

  • 25. 2. 2003 15:07

    sd (neregistrovaný)

    lol. jestli root.cz plati vsem lidem 300,- za to ze si daji tu "praci" a prelozi nake to at&t syntax how-to, tak to sem asi zacnu prispivat taky :)

    btw. doporucuji autorovi aby se pro priste seznamil
    s problematikou jak gcc+internals funguji a popsal alespon zakladni pitfalls s inline assemblerem a vyhnul se zavadejicim faktum
    o cislech volani systemu (int 0x80 ... dejme tomu, ale co libc symboly ?) nebo treba domenky ze gasp
    se pouziva pro preprocessing C souboru. ono to je
    pravda jen na pul - ve skutecnosti v .s kodu muzes
    vyuzit preprocessor Ccka -> ad makra, muzes je delat
    primo pomoci #define ... nevim co je na tom "strojoveho"

    ale coz, po bitve kazdy generalem >:)

  • 25. 2. 2003 21:29

    lama (neregistrovaný)

    jestli to nebude tim, ze lide, kteri do problematiky vidi, nebudou pro blbe 300,- tri hodiny ladit clanek a pak dalsi tri vse v diskusi uvadet na pravou miru

  • 25. 2. 2003 16:32

    lzap (neregistrovaný)

    Kulate zavorky na misto slozenych...

    Ma tam byt: ... na misto hranatych ...

    Jinak se omlouvam za pripadne nestrovnalosti tykajici se externiho assembleru. Nikdy jsem externi assembler nepsal a doufam, ze se tomu vyhnu.

  • 25. 2. 2003 16:54

    Zdenek Kabelac (neregistrovaný)

    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.

  • 25. 2. 2003 17:09

    Pichi (neregistrovaný)

    Presne tak, pan M.P. by se mel trosku zajimat o historii (spon tu pocitacovou). Pak by se tu nemusel strapnovat svymi Wintel klapkami na ocich a vedel by, ze gas potazmo gcc je proti Linuxu i Ix86 pekne vousaty dedecek a tedy ani zadne standardy ala Intel dodrzovat nemuze.

  • 25. 2. 2003 23:08

    tdx (neregistrovaný)

    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.

  • 26. 2. 2003 9:13

    Miloslav Ponkrác (neregistrovaný)

    Už tomu rozumím! Standardem je to, co stanoví GNU! Cokoli jiného je pseudostandard, i když to vzniklo dříve a bylo závazně používáno. Ó díky za otevření očí. Velice díky. Já hlupák, že jsem na to nepřišel dříve! Mohl jsem si spoustu nepochopení ušetřit.

  • 26. 2. 2003 10:18

    Pichi (neregistrovaný)

    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.

  • 26. 2. 2003 11:35

    Miloslav Ponkrác (neregistrovaný)

    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.

  • 26. 2. 2003 12:03

    Pichi (neregistrovaný)

    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.

  • 26. 2. 2003 13:23

    Miloslav Ponkrác (neregistrovaný)

    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...

  • 26. 2. 2003 17:33

    kubik (neregistrovaný)

    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.

  • 27. 2. 2003 15:49

    Miloslav Ponkrác (neregistrovaný)

    Souhlasím, beru gas jako backend k gcc, ale pak se v tom nemělo ručně programovat, ani neměla AT&T syntaxe být uvnitř on-line asm.

  • 6. 3. 2003 12:09

    jr (neregistrovaný)

    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... :)

  • 26. 2. 2003 13:34

    Miloslav Ponkrác (neregistrovaný)

    Jenom si všimněte takové malé věci. Já jsem nikoho osobně nenapadl, pouze jsem se držel argumentů. Vy začínáte pomalu sahat po tom, že mě musíte shodit výroky typu "strapnovat svymi Wintel klapkami na ocich". Když nemáte jiné argumenty, raději mlčte.

  • 26. 2. 2003 17:25

    michael (neregistrovaný)

    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

  • 26. 2. 2003 17:25

    michael (neregistrovaný)

    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

  • 27. 2. 2003 15:56

    Miloslav Ponkrác (neregistrovaný)

    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.

  • 26. 2. 2003 13:21

    lzap (neregistrovaný)

    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.

  • 26. 2. 2003 14:04

    bobo (neregistrovaný)

    no to je hruza, jak nekdo muze snad 20x napsat takovej paskvil.

    neni to zadnej STANDART, ale je to STANDARD !!!


    ad syntaxe: proste gas pouzilo AT&T, je naprosty nesmysl tvrdit, ze si GNU nejakou syntaxi vymyslelo ...

  • 26. 2. 2003 15:10

    Pichi (neregistrovaný)

    Prdlacky svagrova. Standart a jeste jednou standart. Je to spravne podle platnych pravidel ceskeho pravopisu.

  • 26. 2. 2003 17:35

    kubik (neregistrovaný)

    Nam vzdycky rikali, ze je akorat standarta, coz je ta, co ji ma prezident :-) Koukam, ze fakt asi starnu a nesleduju jazykovej vyvoj...

  • 27. 2. 2003 12:10

    Zdenek Kabelac (neregistrovaný)

    LZAP-ovi

    Bohuzel z Vase clanku vyzaruje odpor k syntaxi AT&T a neustale jej 'shazujete' v porovnani se syntaxi Intel (proste je nepredstavuje ani prinejmensim rovnocene, ale jak jakousi odpudivou prekazku, kterou musi pisatel asm obtizne prekonavat). (dle meho jste napr. zapomel uvest ze mate u Intel syntaxe asi 20 ruznych typu mov-u podle toho, jake registry chcete zrovna pouzit)

    Sam pisete, ze vkladani je nemotorne - no, bodejt by bylo, kdyz jste jej ne zcela nepochopil.

    V komentari rikate, ze by se rychlost nejak nezvetsila - no jiste, Vas kod by zrejme i gcc lepe zoptimalizvalo, nez jste jej vy napsal (minimalne loop unrolingem), ale jde o to, ze vy zbytecne pouzivate registry na to, aby jste operandy prenesl do tech registru, ktere potrebujete. Jenze presne tohle vsechno se da zaridit temi modifikatory - cimz usetrite minimalne ty instrukce, kterymi je nacitate.
    Dalsi velmi podstatnym rozdilem je, ze muzete rici, ktere veci nemuseji byt az tak nutne v registrech, ale muzete nechat na kompilatoru zvazit jestli by mohl pouzit misto registru nejakou 'pametovou' promennou - to je velka vyhoda oproti normalnimu psani assembleru - kdy muzete psat castecne 'abstraktni' assembler a v pripade nedostatku volnych registru se nezabyvat vzdy tim, jak nejaky counter vnejsi smycky pocitat. (Dulezite napr. pokud delate kod, ktery je
    -fPIC komplivatelny, kdy pro statickou verzi prekladu mate jeste jeden registr volny - coz u x86 platformy s temi nekolika registry je velmi uzitecne)

    Ano je to hodne mocny nastroj - mozna, ze mu casem prijdete na chut - ale jak rikam z Vaseho clanku cisela znacna nevrazivost k nemu a v podstate jste ani nepochopil zakladni principy prace s nim, coz si myslim, ze by autor, pisici takovyto 'zasvecene'
    se tvarici clanek, mel znat - Kdyby jste zvolil
    jinou formu - napr. Moje boje s GAS - tak bych asi nemel nic proti, ale kdyz pri popisu GAS ztravite polovinu clanku tim, ze ukazujete jak by to bylo dle Vas krasne s Intelovskou syntaxi, tak je tu neco spatne...

    PS: V zadne pripade Vas nechci zrazovat od dalsiho psani clanku, ale proste nez se pustite do pole, ktere uz spousta lidi oralo pred Vami, je dobre se zeptat na jejich nazor.

    ----

    Vety pana M.P.
    * GAS - nechtene dite,...
    * GAS - pouzival syntaxi AT&T -
    GNU tvurci se rozhodli, ze vyrobi nekompatibilni
    syntaxy pro Intel asm Linux
    * ASM nema smysl kontrolovat
    * nejlepe by bylo GAS odhodit
    * ASM neni nikdy prenositelny
    * Linux zavedl hokej

    Na tyto argumenty/vety bylo nekolikrat panu M.P. odpovezeno - nicmene nekdo tu ma asi velmi dlouhe vedeni.

    Takze GAS neni nechteny - do techto instrukci se preklada kod z Cecka, Paskalu, Forthranu atd. -proste je to neco jako bytecode pro Javu. Proc by meli vymyslet pro Intely neco extra ???

    GNU GAS pro Linux nevymyslel - ten preci vznikl az nekdy v roce '92 - pred nim tu ale byla spousta ruznych BSD, SunOS aj - syntaxe AT&T tedy byla prirozenym vyberem.

    Kdyz napisete pro GCC kod, ktery bude generovat ASM do Intelovoske syntaxe a prislusne vse opravite v cele jeho architekture - pak si muzete vyhazovat, co uznate za vhodne.

    Ja osobne - aniz bych videl nativni asm treba od PPC, nebo od MIPS nemam zadny zasadni problem porozumet intrukcim v AT&T provedeni - vy se radeji naucite 20 ruznych syntaxi asembleru - no holt ja jsem asi pohodlnejsi...


    ASM neni prenositelny - no jisteze asi jen tak nevezmete kod pro Motorolu a nevrazite jej do Intelu - ale napr. muzete prenaset kod mezi platformami na stejnych CPU - a diky tomu, ze vsude maji GCC s GAS tak to neni problem. To ale neznamena, ze se kvuli tomu, ze si intel mysli ze nektere registry jsou neco extra budu ucit 'x' ruznych mov-u, add-u, atp... Proste chci prenest registr A do registru B. Proc bych mel potrebovat neco jineho nez 'mov' (l,w,b pak slouzi jako specifikator prenasene delky.)



    Linux zavedl hokej - no sam pisete, ze si chteli zjednodusit zivot - ale samozrejme, ze chteli - nebo Vy si ho snad komplikujete ???

    Tedy jeste jednou a polopate - LINUX nema s GAS a jeho syntaxi nic spolecneho, To ze se pro implementaci zvolila AT&T syntaxe, kterou v dobe vzniku pouzivali snad vsichni krome Intelu, byla podle Vas neuveritelne spatna volba - tento Vas nazor bohuzel nesdilim.

    Navic nevim nad cim se zrovna Vy rozciluje - zvladnul jste jiz nejakych XY assembleru - takze pridat si tam jeden dalsi s AT&T syntaxi by prece nemel byt zadny problem (a jesti si predstavte, ze kdyz jej zvladnete a budete pouzivat, budete moci zapomenout na tech zbylych xy :))

  • 27. 2. 2003 16:12

    Miloslav Ponkrác (neregistrovaný)

    Přiznám se, že teď už chápu, že gas jako backend pro gcc je O.K.. Pokud gas nebyl určen na přímé programování v asm, pak je to v pořádku.

    Jinak dokážu si představit, že kod bude prenositelny mezi ruznymi platformami na stejnem procesoru i tehdy, kdyby vsude vladla Intelovska syntaxe.

    AT&T syntaxe urcite neni spatna volba, naopak neuveritelne dobra, pokud mela slouzit pouze jako vnitrni format pro gcc.

  • 1. 3. 2003 22:11

    lzap (neregistrovaný)

    To je vas vyklad, ja se nesnazil nic shazovat, samotny system Linux je dukazem toho, co s GASem lze udelat. Clanek jsem napsal z pohledu programatora, ktery ma jiz nejake zkusenosti s programovanim na platforme Microsoft. Jeste jednou opakuji ze zadnou nenavist ke GAS nemam, ani k AT&T, je jasne, ze GAS nebyl sestrojen pro intel. Nad nenavisti (k ms-intel) byste se mel mozna zamyslet vy!

    V porovnani s vkladanym masm assemblerem JE podle meho nazoru vlkadani v GASu nemotorne, nikde jsem ale nepsal ze je na nic nebo ze neni efektivnejsi nebo ja nevim co. Nalejme si cisteho vina, je proste jen jine.

    Co se tyce optimalizaci, asi jste si toho porad nevsiml, ale tenhle clanek NEBYL o zadne optimalizaci. Co se tyce prikladu, tezko by zde optimalizator neco zmohl, a prosim nepiste mi tady o tom, ze by to mohlo byt rychlejsi o dve-tri instrukce, to je k smichu. Pokud rozumite GASu, pak jiste chapete, ze veci tykajici se optimalizaci NEMOHLY byt zahrnuty v jednom clanku. Opravdu se na me nezlobte, timhle jsem se ve clanku nezabyval. Kdyz si koupite ucebnici anglickeho jazyka, v prvni kapitole asi nebudete resit nepravidelna slovesa.

    Kdybyste zapatral do archivu roota, nenasel byste o GAS zadne vetsi povidani a ja si zkratka rekl, ze by zde melo neco byt. Take proto, ze informace o GASu se tezko hledaji (alespon me to moc neslo -- ne, nebojte, info ovladat umim ;-). Chtel jsem zkratka dat navedomi, ano je zde najaky GCC a je tam neco jako GAS, da se vkladat, jde to takhle (AT&T nebo INTEL) a lze s tim psat i externe. TECKA.

    Co se tyka nazvu clanku, tak se musite smirit s nazvem, ktery jsem clanku dal. Clanek si nekladl za cil byt jak vy rikate ``zasveceny'', podava zakladni informace, coz porad nemuzete stravit. Nelibi se vam, ze nekdo, kdo ma mensi znalosti problematiky nez vy, pise nekde clanky. Prominte, ale to bysme se asi nikam nedostali ;-P

    Opravdu me mrzi, ze diskuzi pod clankem chapete jako moznost navazet se do autoru, moznost presentovat sve znalosti, ale vezte, ze diskuze to jsou proto, aby jsme mohli upresnit a doplnit podavane informace. Nediskutujme tedy o zasvecenosti ci nezasvecenosti, ale o GASu. Timto vam chci podekovat za velmi podnetne doplneni co se tyce optimalizace a zaroven dekuji za *SKVELY* tip na ffmpeg.

    Jeste pred vydanim clanku jsem se rozhodl zadny dalsi dil nepsat (basm, nasm), a to diky jednomu cloveku ze skoly, ktery me od toho odradil. Jenom abyste se netrapil, ze uz o assembleru nebudu psat. Neni to kvuli vam ;-)

    ps - howk. uz se k tomu nebudu nejak vyjadrovat, pokud mate nejake vyhrady, ktere se netykaji GASu, pouzijte prosim muj email, dekuji

  • 27. 10. 2003 15:07

    x (neregistrovaný)

    Asembler je naprosto nutny pri programovani 3D her - muzete si myslet o prekaldacich C++ cokoliv (ja ja zcela bezne pouzivam), ale jakykoliv kod napsany clovekem optimalizovany na rychlost a ne na krasu(tedy pouzivani vsech existujich moznosti instrukci) bude jste dlouho rychlejsi nez stejny kod vytvoreny prekladacem. A prenositelnost znamena ze ho muzu prelozit na stejnem stroji bez upravovani sytaxe pod ms-windows jako na linuxu. A Instel standart je proste puzivany stnadart pro procesory INTEL.
    To znamena, ze GAS je pouze pro mezipreklad z C++.
    A ktomu by mel byt i kvalitni ASEEMBLER s Intelovskou syntaxi pouzitelny i pro vkladani do C++ kodu.
    Bez toho se 3D hry nebudou bezne portovat na linux(na Windows jsou podstane lepsi prodeje a tak se primarne budou vyvyjit tam). Proste rozhoduje cena za portaci - a cim to jde jednoudusec tak je to levnejsi a rychlejsi.
    A pokud neboudou pod Linuxem hry tak se bezne pouzivat v domacnostech LINUX nebude - nebot dite(pro ktere je PC hlavne porizovano) rekne tatinkovy, pokud tam nejdou me hry o kterych se bavim se vsemi kamarady ve skole, tak ten linux zahod a dej mi tam WINDOWS, jinak takovej pocitac ani nechci!!!
    A to si uvedomte - snadnost vyvoje aplikaci znamena hodne aplikaci a tim praktickou pouzitelnost LINUXU pro jine veci nez jsou servery!!!