【发布时间】:2014-05-06 11:24:52
【问题描述】:
到目前为止,这是我的代码。我已经让它打印了很多问号,它甚至无法识别我格式中的换行符。我希望最终能够增加 unicode 值,以便该函数打印一组大约 50 个 unicode 字符,但我很难让它只打印一个:S
; compile with
; nasm -felf64 Uniwc.asm && gcc Uniwc.o && ./a.out
global main
extern wprintf
section .text
main:
mov rdi, fmt
mov rsi, uchar
mov rax, 0
call wprintf
ret
uchar:
db '/u0021'
fmt:
db "%ls",0
编辑:通过确保在打印前对齐堆栈,我得到了类似的代码来打印 UTF-8 字符
; nasm -felf64 Uniwc.asm && gcc Uniwc.o && ./a.out
global main
extern printf
section .text
main:
push rbp
mov rdi, fmt
mov rsi, uchar
mov rax, 0
call printf
pop rbp
ret
uchar:
db 0x21, 0
fmt:
db "%c", 10, 0
现在我遇到了一个新问题,如果我更改 uchar 中的 unicode,例如,如果我将其更改为 0x7E (~),程序将不会返回新字符,它仍然会打印 0x21 (!) 我假设这是堆栈上的 rbp 寄存器有问题,但我不确定如何解决它
【问题讨论】: