【发布时间】:2022-02-09 22:02:23
【问题描述】:
我在 64 位的 Windows 11 上,我在程序集 a64 中编写了这段代码,但在编译和链接后(使用 nasm 和 ld)它只需等待 3 秒平均然后停止:
bits 64
section .data
message db 'Hello World !', 10
section .text
global _start
_start:
mov rax, 1
mov rdi, 1
mov rsi, message
mov rdx, 13+1
syscall
mov rax, 60
mov rdi, 0
syscall
在 powershell 中键入 nasm 命令:nasm -f win64 file.asm -o file.o
然后 ld 命令:ld file.o -o file.exe
当我在 powershell 中启动这个文件时,它只需等待 3 秒并停止。 cmd也一样。
这是我的编译器的测试程序,用于查看它是否工作,我不知道我是否没有正确编写代码,或者这些编译器或链接器是否无法在 Win 11 上工作。
注意:我的处理器也是英特尔
【问题讨论】:
-
你从哪里得到这些系统调用号码的?看起来像linux。 linux 系统调用无法在 Windows 上运行。
-
你可以看看stackoverflow.com/q/24423642/2189500(虽然那是32位)。
标签: assembly 64-bit x86-64 nasm ld