• úvod
  • témata
  • události
  • tržiště
  • diskuze
  • nástěnka
  • přihlásit
    registrace
    ztracené heslo?
    LITTLELIAssembler
    SHALDAN
    SHALDAN --- ---
    _K5_: no to bude těžké poradit .... za prvé nejsem zkušený :)) a za druhé je to případ od případu ... ale troufám si říct, že asi lehce nebude možné (pro začátečníka určite ne) vymyslet optimalizovanější kod přímo v assembleru oproti třeba .if apod... a i ti největší guru to používají, takže můžeš pak klidně lehce spát :))

    Ale jinak obecně platí, že čím častější užití registrů, tím to běží rychleji :))

    Nejlepší informace jsou jednoznačně na www.masmforum.com .. ale tam už asi seš předpokládám :)
    _BENNY
    _BENNY --- ---
    to ja si pred par dny (pracovne) musel vymyslet svuj vlastni p-kod assembler... v jednoduchosti je kraasa :-)
    _K5_
    _K5_ --- ---
    SHALDAN: no, jsem teprve u první kapitoly ;-) a assembler x86 vlastně vůbec neumím

    CERBERUS: jo jo, tak to jsem tam zapomněl, jinde xory mám. Určitě by se dalo optimalizovat i to, že jsou tam konstatny 32 a 63 (což je "skoro" 64 a tedy rotace o jeden bit ;-)

    Mě v tuto chvíli jde spíš o obecné principy, například jestli není lepší psát míň "assemblerově" a víc "preprocesorově" (tedy místo CMP+JMP psát .IF .ENDIF), nebo bych chtěl pochytit nějaké moudro, jestli víc využívat registry procesoru nebo naopak každý prd cpát do RAMky jako je běžné ve vyšších jazycích atd
    CERBERUS
    CERBERUS --- ---
    _K5_: Hezke :) Ale pri zbeznem pohledu jsem narazil na 'mov eax,0'.Radsi bych dal 'xor eax,eax', je to mensi a rychlejsi :)
    SHALDAN
    SHALDAN --- ---
    _K5_: šikovné :)) ... jsem rád, že ty překlady kromě mně přineslo něco užitečného i někomu jinému :). Graficky lepší a příjemnější forma tutoriálů se připravuje na stránkách winasm komunity, takže až to tam dají, dám vědět :))
    _K5_
    _K5_ --- ---
    V rámci samouky assembleru (díky za SHALDAN ) jsem sesmolil takovou malou pitominu, uvítám konstruktivní kritiku, co se má nebo dá udělat jinak/lépe. Zkompilované s návodem a příkladem je to tady, celý zdroják se mi sem nedaří pastnout :-(, asi vadí mix uvozovek, apostrofů a vran v definicích, ale bez těch se obejdete ;-)

    .code
    start:
    invoke GetCommandLine
    mov CommandLine, eax

    invoke PathGetArgs,CommandLine
    mov ParamsText, eax
    mov esi, eax
    lodsb
    or al,al
    jz ZobrazNapovedu
    cmp al, 63
    je ZobrazLepsiNapovedu
    lodsb
    cmp al, 32
    jl ZobrazNapovedu
    lodsb
    cmp al, 32
    jl ZobrazNapovedu
    mov esi, ParamsText
    add ParamsText, 2
    mov eax,0
    lodsb
    sub al, 48
    cmp al, 7
    jl CislaOK
    sub eax, 7h
    cmp al, 7
    jl @F
    xor al, al
    @@:
    add eax, MB_ICONERROR
    jmp NaplnPromenne
    CislaOK:
    or al,al
    jz UkazMessageBox
    add eax, MB_ICONQUESTION
    mov ParamsCaption, offset MsgBoxCaption3
    NaplnPromenne:
    mov Vzhled, eax
    jmp UkazMessageBox
    ZobrazLepsiNapovedu:
    mov ParamsText, offset MsgBoxCaption4
    mov ParamsCaption, offset MsgBoxCaption0
    jmp UkazMessageBox
    ZobrazNapovedu:
    mov ParamsText, offset MsgBoxCaption1
    mov ParamsCaption, offset MsgBoxCaption0
    UkazMessageBox:
    invoke MessageBox, NULL, ParamsText, ParamsCaption, Vzhled
    invoke ExitProcess, eax ;errorlevel = kód stisknutého tlačítka
    end start
    OTAVA
    OTAVA --- ---
    //OT

    Velmi se omlouvam za SPAM, ale rad bych Vas pozval do nove zrizeneho klubu :

    [ Software testing - Quality Assurance aneb testuji, testuješ, testujeme software ]

    //OT
    SHALDAN
    SHALDAN --- ---
    KYOSUKE: co jsem v rychlosti našel u Agner's Fog Pentium Optimazition :

    BT, BTC, BTR, and BTS change the carry flag but leave the other flags unchanged. This causes a false dependence on the previous value of the flags and costs an extra uop. Use TEST, AND, OR or XOR instead of these instructions.
    ------------------
    18.5 Bit test (all processors)
    BT, BTC, BTR, and BTS instructions should preferably be replaced by instructions like TEST, AND, OR, XOR, or shifts on P1, PMMX and P4. On PPro, P2 and P3, bit tests with a memory operand should be avoided.
    KYOSUKE
    KYOSUKE --- ---
    Jinak teda na http://developer.amd.com/documentation.aspx se objevily nový zajímavý věci, K8 a podobně by stálo za to hodit na nástěnku. Zkusím se tím trošku probrat. ;-)
    KYOSUKE
    KYOSUKE --- ---
    Hele, lidi, jak je to s tím BTčkem? Fakt je pomalejší, než TEST? Teda z toho AMDího tlustopisu mi to vůbec nepřišlo. Budu si ty guidy muset asi vytisknout, zjistil jsem, že ty AMDí jsou fakt pěkný. ;-)
    SHALDAN
    SHALDAN --- ---
    hehe .. tam je dobrej flame ohledne optimalizace přes bitová pole hned v prvním vláknu :)))
    KYOSUKE
    KYOSUKE --- ---
    http://www.root.cz/clanky/fixed-point-arithmetic/ :-)

    Ale to zas bude flejmů... :-D
    LITTLELI
    LITTLELI --- ---
    ARCHDRONE: jukni do nejakyho demokodu :) to je casto velmi cryptic ;)
    ARCHDRONE
    ARCHDRONE --- ---
    _BENNY: todle hrabe primo do zasobniku, to se mi libi:) lol, btw existuje neco jako http://www.ioccc.org/ akorat v assembleru?:))
    _BENNY
    _BENNY --- ---
    ARCHDRONE: vypada tohle lip? ;)

    call $+5
    add dword ptr [esp],65535
    ret
    ARCHDRONE
    ARCHDRONE --- ---
    fuj, fakt to vypada hnusne:))
    _BENNY
    _BENNY --- ---
    call $+5
    pop eax
    add eax,65535
    jmp eax

    je to prasarna ;)
    ARCHDRONE
    ARCHDRONE --- ---
    da se udelat neco jako
    jmp [ip]-10 resp. jmp [ip]+65545 ? imho to vypada jako slusna prasarna, ale da se skocit o par instrukci dozadu kdyz treba nechci pouzit navesti?
    SHALDAN
    SHALDAN --- ---
    RCR: :)))
    RCR
    RCR --- ---
    Tomu verim, ale zadne widle, ktere bych mohl na nejake PC nainstalovat legalne nevlastnim. Vlastnim jedny co jsou OEM k Alphe a tam zase nebude chodit ten assembler, protoze je to Alpha. No mozna se rozhodnu stat se zase na chvilku pocitacovym piratem :)
    Kliknutím sem můžete změnit nastavení reklam