这是一个反复出现的问题,但我从来没有找到适合我案例的完整解决方案,只有零碎的信息和许多不同的实现。
我在 Linux(Ubuntu 22.04)上有这段代码,带有
nasm
、x86_64
,用 cpuid
打印 CPU 的 VendorID:
section .bss
buff resb 12
section .text
global _start
_start:
mov eax, 0
cpuid
mov dword [buff+0], ebx
mov dword [buff+4], edx
mov dword [buff+8], ecx
mov rax, 1
mov rdi, 1
mov rsi, buff
mov rdx, 12
syscall
mov rax, 60
mov rdi, 0
syscall
如何打印
stdout
hex
寄存器的eax
值?
我是 Assembly 的新手。 这个伪代码原则上看起来很简单:但是,如果这是一个合适的路径,我不知道如何在汇编中实现它。
以上代码(成功)编译为:
$ nasm -f elf64 test_cpuid.s
$ ld -o test_cpuid test_cpuid.o
我想继续使用这个程序。