我正在尝试使用CMake生成的项目为Windows 11上的Visual Studio编译NASM汇编代码。
我直接从命令行运行nasm -f win64
,它报告了与VS相同的错误:
hello_world.asm:1: error: parser: instruction expected
字符串
我的汇编代码(用于32位Linux,而不是Windows):
section .text
global _start ; необходимо для линкера (ld)
_start: ; сообщает линкеру стартовую точку
mov edx,len ; длина строки
mov ecx,msg ; строка
mov ebx,1 ; дескриптор файла (stdout)
mov eax,4 ; номер системного вызова (sys_write)
int 0x80 ; вызов ядра
mov eax,1 ; номер системного вызова (sys_exit)
int 0x80 ; вызов ядра
section .data
msg db 'Hello, world!', 0xa ; содержимое строки для вывода
len equ $ - msg ; длина строки
型
我试着用所有可能的编译器(XNUMX/Release/x86/x64等)运行构建,但仍然没有结果。
我的NASM构建是2.16.02rc6
。我让另一个程序员用完全相同的参数和NASM构建为我组装这些代码,它对他有效。
甚至下面的程序也不能被汇编,错误与以前完全相同
section .text
global main
main:
ret
型
1条答案
按热度按时间raogr8fs1#
程序集源文件以UTF-8 with BOM编码。
NASM不接受BOM,只接受普通的UTF-8或ASCII。
(It不允许非ASCII UTF-8用于标签名称和注解等内容。)
将源文件编码更改为ASCII解决了此问题。