作为课程的一部分,我需要编写具有特定格式的汇编代码。老师称之为“Intel syntax x86-64”。我尝试使用给定的命令 ( gcc -O3 -o op sc.s
) 对其进行编译,尽管在 linux PC 上运行良好,但在 Mac 上却失败了。经过一些研究,我发现 Mac OS 不支持这种语法,并按照老师的建议,我尝试从可启动的 USB 密钥和虚拟机(使用 VirtualBox)上运行 Linux,但由于键盘兼容性问题,两者都失败了。我搜索了一些在线解决方案,但没有一个可以毫无问题地编译源代码。如何在不购买新计算机的情况下运行它?如果可能的话,我想运行这个确切的语法。
谢谢你读我!
这是他给我们的代码示例:
.intel_syntax noprefix
.data
msg: .asciz "Hello, world!\n"
.text
.global main
.type main, @function
main: PUSH RBP
MOV RBP, RSP
MOV RDI, offset flat:msg
CALL printf
MOV EAX, 0
POP RBP
RET
With 可以用 gcc 编译(实时显示)但用它编译gcc -o hw1 hw.s
或gcc -o hw1 -masm=intel hw.s
给我以下错误:
hw.s:6:9: error: unknown directive
.type main, @function
^
hw.s:9:29: error: unknown token in expression
MOV RDI, offset flat:msg
编辑:在虚拟机上设置 ssh 服务器并通过主机终端连接到虚拟机使使用 VirtualBox 变得更加容易,请参阅https://stackoverflow.com/a/10532299/5770818