mirror of
https://github.com/netwide-assembler/nasm.git
synced 2024-12-21 09:19:31 +08:00
9fa2e72997
Add support for bigendian UTF-16 and UTF-32, and (for symmetry) add explicitly littleendian operators. Signed-off-by: H. Peter Anvin <hpa@zytor.com>
83 lines
1.6 KiB
NASM
83 lines
1.6 KiB
NASM
;Testname=test; Arguments=-fbin -outf.bin; Files=stdout stderr utf.bin
|
|
;Testname=error; Arguments=-fbin -outf.bin -DERROR; Files=stdout stderr utf.bin
|
|
%define u(x) __utf16__(x)
|
|
%define w(x) __utf32__(x)
|
|
%define ul(x) __utf16le__(x)
|
|
%define wl(x) __utf32le__(x)
|
|
%define ub(x) __utf16be__(x)
|
|
%define wb(x) __utf32be__(x)
|
|
|
|
db `Test \u306a\U0001abcd\n`
|
|
dw u(`Test \u306a\U0001abcd\n`)
|
|
dd w(`Test \u306a\U0001abcd\n`)
|
|
|
|
db `\u306a`
|
|
db `\xe3\x81\xaa`
|
|
|
|
dw __utf16__ "Hello, World!"
|
|
|
|
nop
|
|
|
|
mov ax,u(`a`)
|
|
mov bx,u(`\u306a`)
|
|
mov cx,u(`\xe3\x81\xaa`)
|
|
mov eax,u(`ab`)
|
|
mov ebx,u(`\U0001abcd`)
|
|
mov ecx,w(`\U0001abcd`)
|
|
|
|
db `Test \u306a\U0001abcd\n`
|
|
dw ul(`Test \u306a\U0001abcd\n`)
|
|
dd wl(`Test \u306a\U0001abcd\n`)
|
|
|
|
db `\u306a`
|
|
db `\xe3\x81\xaa`
|
|
|
|
dw __utf16le__ "Hello, World!"
|
|
|
|
nop
|
|
|
|
mov ax,ul(`a`)
|
|
mov bx,ul(`\u306a`)
|
|
mov cx,ul(`\xe3\x81\xaa`)
|
|
mov eax,ul(`ab`)
|
|
mov ebx,ul(`\U0001abcd`)
|
|
mov ecx,wl(`\U0001abcd`)
|
|
|
|
db `Test \u306a\U0001abcd\n`
|
|
dw ub(`Test \u306a\U0001abcd\n`)
|
|
dd wb(`Test \u306a\U0001abcd\n`)
|
|
|
|
db `\u306a`
|
|
db `\xe3\x81\xaa`
|
|
|
|
dw __utf16be__ "Hello, World!"
|
|
|
|
nop
|
|
|
|
mov ax,ub(`a`)
|
|
mov bx,ub(`\u306a`)
|
|
mov cx,ub(`\xe3\x81\xaa`)
|
|
mov eax,ub(`ab`)
|
|
mov ebx,ub(`\U0001abcd`)
|
|
mov ecx,wb(`\U0001abcd`)
|
|
|
|
%ifdef ERROR
|
|
dw __utf16__ 33
|
|
dw __utf16__, 46
|
|
dw __utf16__("Hello, World!",16)
|
|
dw __utf16__("Hello, World!",16
|
|
dw u(`\xff`)
|
|
|
|
dw __utf16le__ 33
|
|
dw __utf16le__, 46
|
|
dw __utf16le__("Hello, World!",16)
|
|
dw __utf16le__("Hello, World!",16
|
|
dw ul(`\xff`)
|
|
|
|
dw __utf16be__ 33
|
|
dw __utf16be__, 46
|
|
dw __utf16be__("Hello, World!",16)
|
|
dw __utf16be__("Hello, World!",16
|
|
dw ub(`\xff`)
|
|
%endif
|