linux - 在汇编中调用printf时如何设置颜色

标签 linux assembly printf nasm x86-64

我想在从程序集调用 printf 时设置颜色。

这是我的代码:

Out:    
    mov     rdi, answer
    mov     rsi, r10
    mov     rax,0
    call    printf
section .data
    answer:     db       "\033[0;31m%d\033[0m",10,0

我使用 NASM 编译和 gcc 链接:

nasm -f elf64 "%f"
gcc -o %e %e.o

但是,输出是:

\033[0;31m(my r10)\033[0m

最佳答案

对周围的字符串使用 ` 以在 NASM 中使用转义序列。

引用:3.4.2 Character Strings

试试这个:

Out:
    mov     rdi, answer
    mov     rsi, r10
    mov     rax,0
    call    printf
section .data
    answer:     db       `\033[0;31m%d\033[0m`,10,0

关于linux - 在汇编中调用printf时如何设置颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36075263/

相关文章:

linux - 如何检测getty respawn?

linux - 如何列出 nginx 中的所有虚拟主机

c++ - 如何使用movntdqa避免缓存污染?

linux - Bash printf 前缀

c++ - vsnprintf 和 gcc

linux - 命令运行时如何简化输出文件

regex - 如果找到相同的单词,命令 egrep 提取一行

c - 函数终止时出现段错误

c - 为什么 %esp 会被不明确地更改?

c - 为调用 printf 的宏添加前缀