Hirdetés

Új hozzászólás Aktív témák

  • P.H.

    senior tag

    válasz P.H. #78 üzenetére

    Hogy a CPU-változások egyértelműek legyenek:
    - az első főleg a nem HT-s CPU-knál vagy a HT melletti egy szálas végrehajtás esetében jelent némi előnyt
    - a következő kettő általános számítások esetében néhány százalék
    - a 4. olyankor, ha rövid szövegeket kell másolgatni ide-oda (ilyen már sok van, Excelben pl. grafikon alá- és melléírások)
    - a try-except általános a programokban, pl. a szöveg->szám konvertálásoknál: az Excel tipikusan ilyen, mivel nem mindig tudja előre, hogy egy-egy mezőbe olyan érték került-e beírásra, mint amit várt (pl. automatizált feldolgozás vagy CSV esetén). Ilyenkor a szövegek számmá konvertálásához a pl. a következő kódot használják Windows-nál 32 bites esetben (64 bitnél kissé más a kód, pl. pushad és popad helyett pár más utasítás van):

    pushad
    push offset(@ERROR)
    push dword ptr fs:[00000000h]
    mov fs:[00000000h],esp

    [konvertálási programkód]

    pop dword ptr fs:[00000000h]
    add esp,04h
    jmp @normálisesetben_tovább



    { valahol máshol a programban: }
    @ERROR:
    mov esp,[esp+2Ch]
    pop dword ptr fs:[00000000h]
    add esp,04h
    popad

    [sikertelen konvertálás = exception lefutó kódja, pl. hibaüzenet, hol a hiba]

    jmp @hibaesetben_tovább

    Az fs: által mutatott memóriaterület az adott programszál egyéni memóriaterülete (thread storage), általában a kernel kezeli. Ezen gyorsíthat az "Useful for user-level thread storage by providing 4 new instructions for ring-3 access of FS&GS base registers".

    [ Szerkesztve ]

    Arguing on the Internet is like running in the Special Olympics. Even if you win, you are still ... ˙˙˙ Real Eyes Realize Real Lies ˙˙˙

Új hozzászólás Aktív témák