Obsah / Utility / CHARSET / CharUTF16LES, CharUTF16BES
Zdrojový kód: INCLUDE\UTIL\CHARSET.INC, UTIL\CHARSET.ASM
CharUTF16LES, CharUTF16BES - Zjištění velikosti znaku v kódu UTF-16LE/UTF-16BE
Funkce CharUTF16LES/CharUTF16BES navrátí velikost znaku v kódu UTF-16LE/UTF-16BE.
|
Na vstupu funkce obsahuje registr EAX Unicode kód znaku a registr EDI čítač velikosti dat. Na výstupu funkce je čítač v registru EDI zvýšení o velikost dat, která by znak zabral ve výstupním bufferu. Obsah registru EAX je funkcí zničen.
|
Funkce obsluhuje pouze 2 případy - znaky s kódem 0 až 0FFFFh a znaky s vyšším kódem. Namísto větvení funkce skokovou instrukcí se použije rychlejší registrová operace. Podle výsledku testu velikosti kódu znaku se nastaví obsah registru AL na hodnotu 1 pro kód větší než 0FFFFh a na hodnotu 0 pro kód menší. Přičtením 1 a vynásobením výsledku 2 se obdrží výsledná velikost znaku v bufferu - tj. 4 nebo 2 bajty.
Obsah / Utility / CHARSET / CharUTF16LES, CharUTF16BES