• úvod
  • témata
  • události
  • tržiště
  • diskuze
  • nástěnka
  • přihlásit
    registrace
    ztracené heslo?
    LITTLELIAssembler
    KYOSUKE
    KYOSUKE --- ---
    LITTLELI: A co teda Assembler a FORTH - správná dvojka? :-D Nemůžu si pomoct, ale Moore u mě teda hodně ruluje. Škoda, že k tomu správnému HW se člověk moc nedostane... :-/
    KYOSUKE
    KYOSUKE --- ---
    Nechce někdo zkusit štěstí na mainframech? :-)

    http://www.ca.com/offices/czechslovak/local/mcoe.htm
    SHALDAN
    SHALDAN --- ---
    VIRUS31: jojo, to myslím ... ono pochopit klasickou smyčku zpráv, zprávy, vlákna apod. hrůzy chviku zabere. Ale je možné, že to všechno znáš, o to máš větší výhodu. Obecně programovat pod Windows (okna, menu apod.) třeba v takovém MASM není zase až takový problém, jak si mnozí C a Pascalisti myslí a naprvní pohled se kod neliší tak, jak by si mohlo předpokládat. Prostě voláš WinAPI funkce a výsledky máš hlavně v registru EAX.
    VIRUS31
    VIRUS31 --- ---
    zaklady ve windows myslis praci s win api?
    SHALDAN
    SHALDAN --- ---
    VIRUS31: no to se máš na to těšit, protože dema počítají samozřejmě čísla na desetinná místa a tomu porozumět v assembleru a ještě k tomu se vyznat v cizím kodu, to je za trest :)). Začít ale musíš od začátku, jednak samotnej assembler a jednak i základy programování ve Windows ...... takže neváhej, je toho dost :)
    VIRUS31
    VIRUS31 --- ---
    rad bych napr chtel porozumet kodu nejakyho dema (demoscene) nebo bych rad umel napsat nejaky drobny programek ktery bude neco pocitat. pod windows asi. linuxu se nebranim.
    SHALDAN
    SHALDAN --- ---
    VIRUS31: a jinak samozřejmě není problém se zeptat a hlavně další MUST je registrace na www.masmforum.com ... je tam všechno nebo se na skoro všechno můžeš zeptat.... lepší start nemůže být ... a pro začátek doporučuji stáhnout MASM balík. Tedy nevím, co chceš dělat, předpokládám, že chceš něco dělat ve Windows, v opačném případě ať ti poradí zdejší zkušení kolegové, já jsem taky vlastně začátečník :))
    VIRUS31
    VIRUS31 --- ---
    povrchne znam par instrukci co ktera dela, ale neda se to povazovat ani za 1% znalost zakladu.. nene jsem komplet zacatecnik.
    SHALDAN
    SHALDAN --- ---
    VIRUS31: jestli chceš hned výsledky pod Winama :), maximálně doporučuji světově proslulé Iczelionovy tutorialy (předpokládají však základní assembleru):
    http://win32assembly.online.fr/tutorials.html

    a naprosto geniálně komplexní knihy (zdarma) jsou na: http://webster.cs.ucr.edu/
    VIRUS31
    VIRUS31 --- ---
    ha! tak to vypada ze sem to i sam trefil dobre :)
    dik
    KYOSUKE
    KYOSUKE --- ---
    VIRUS31: Li mi onehdá doporučoval http://www.drpaulcarter.com/pcasm ;-)
    VIRUS31
    VIRUS31 --- ---
    Meli byste nejaky tip na ebook, ktery by vysvetlil zacatecnikovi princip psani progamu pomoci assembleru? Nejaky tutorial pro newbieka :)
    KOMPAS
    KOMPAS --- ---
    LISKNI_SI:
    O variante s registrem bez dummy nevim, ale stavajici reseni je snad dostacujici. Vypnute optimalizace jsou stejne nepouzitelne, zvlaste pro C++ kod.
    LISKNI_SI
    LISKNI_SI --- ---
    KOMPAS: Diky, ale narazil jsem jeste na jednu nesrovnalost. Kdyz vytvorim nejakou dummy promennou, dam ji jako vystup, nikde jinde ji nepouziju, tak ji to vyoptimalizuje jen pri zaplych optimalizacich. Ja bych byl uplne nejradsi, kdyby mi to jen dalo nejaky registr a uz ho nikam nekopirovalo zpatky. Ale zkousel jsem udelat tu dummy promennou jako register int a zda se, ze to je dobry. Jen bych se rad ujistil, ze je to spravne a ze mu tim nepridelavam praci.

    A k tomu zbytku - s tim problem neni, mam tam normalni vstup, normalni vystup a je mi jedno, kam to ten blok hodi, je to jen prepis nejakych bitovych operaci do asm kvuli rychlosti.
    KOMPAS
    KOMPAS --- ---
    LISKNI_SI:
    No tohle IMHO bohuzel nejde, resi se to tak, ze se ten registr ulozi do jine dummy promenne, ktera se pak zahodi (a prekladac ji proto vyoptimalizuje). Viz http://www.cs.virginia.edu/~clc5q/gcc-inline-asm.pdf sekce 4.8 Temporary registers a okoli.

    Pokud ten asm kod jenom vezme vstup, neco s nim dela a pak ho prohlasi za dummy vystup, prekladac muze usoudit, ze se vyoptimalizuje CELY ten asm (protoze z pohledu prekladace byl vysledkem snazeni pouze dummy). Pro takovy pripad je nutne uzit asm volatile (nikoliv volatile dummy, to by se zbytecne provadely operace s dummy promennou). Tohle plati obecne i v pripadech, ze clobber je prazdne a kod dela neco "magickeho", co nelze popsat prostredky inline assembly (tzn. ruzna manipulace se stavovymi registry procesoru atd.).

    I kdyz kod asm volatile je bezpecny pred odstranenim, prekladac ho stale muze posouvat okolo ostatnich prikazu, se kterymi nema kod uvedenou datovou zavislost, takze se provedou ve spatnem poradi. Nekde jsem videl priklad prepnuti do jineho rezimu zpracovani floatu pred vypoctem, ktere bylo vsak presunuto az ZA ten vypocet. Toto je potreba resit "virtualni" zavislosti tak, ze jeden z operandu ovlivneneho prikazu bude oznacen jako vystup asm operace.

    Doufam, ze jsem to moc nezmotal, preci jen se mi ocka klizi.
    LITTLELI
    LITTLELI --- ---
    ja tohle nevim, ale z linuxassembly se da leccos najit zkus trebas:
    http://www-128.ibm.com/developerworks/linux/library/l-ia.html?dwzone=linux

    a tady je cosi o tom jak kompilatoru sdelit, se kterymi registry uz nemuze pocitat
    http://www.delorie.com/djgpp/doc/brennan/brennan_att_inline_djgpp.html

    vic sam nevim.
    LISKNI_SI
    LISKNI_SI --- ---
    Zdar,
    uz tu nejakou dobu valcim s vkladanym asm v cecku (kompiluju to pomoci gcc), a stale jsem nenasel odpoved na jednu zapeklitou otazku.

    Potrebuji vstupni operand, nejlepe do registru a potrebuji mu nejak rict, ze mu ten registr zmenim a aby pri optimalizaci nepocital s tim, ze mu ho nezmenim. Pokud jsem spravne rtfmoval v info gcc, tak to tohleto snad ani neumi. Presto se ptam,
    1) existuje zpusob, jak mu rict, ze chci vstup do registru, ze to budu menit, ze si vyslovene nepreji, aby tu zmenenou hodnotu kamkoliv ukladal (tedy nechci tu promennou menit, chci jen menit ten registr a pak ho zahodit) a uz vubec si nepreji, aby tu novou hodnotu pouzival dal,
    2) anebo zda-li existuje zpusob, jak ho pozadat o nejaky prazdny registr, takovy, ktery zrovna nejmin potrebuje, do ktereho si to proste zkopiruju (tedy budu tam mit normalne vstup kamkoliv, treba i do pameti) a pak si s tim budu delat co chci,
    3) anebo je skutecne nutne si ten registr vybrat sam, napsat ho do clobber listu a zkopirovat to tam (proc tohle nechci - predpokladam, ze podle toho, jaky registr si vezmu, se odviji to, ktere veci bude muset znovu nacist a jestli vubec, coz je zbytecne, pokud by to slo lip)

    Diky predem.
    SHALDAN
    SHALDAN --- ---
    zdravím a sorry za trochu OT, ale nemáte někdo na prodej nebo k dispozici :) knihu:
    Assembly Language for Intel-Based Computers (4th Edition) nebo jinou edici ? Kip R. Irvine ?
    LITTLELI
    LITTLELI --- ---
    hmm to bude tim, ze programovani v assembleru je neco jako umeni :)
    jen tezko muzes impresionistovi pak tvrdit, ze impresionismus stoji za hovno.
    kor kdyz sam se ten kritik neumi de fakto ani podepsat, natoz rozumne vyjadrit :)
    ale to je obecnejsi problem.
    Kliknutím sem můžete změnit nastavení reklam