gpt4 book ai didi

linux - 将 GAS 与 .intel_syntax 一起使用时出错

转载 作者:太空狗 更新时间:2023-10-29 11:12:51 24 4
gpt4 key购买 nike

根据一些文档和 this answer , 可以在 Linux 中使用英特尔语法而不是默认的 AT&T 语法来使用 GAS。

我尝试编译以下简单代码,包含在专用文件 file.s 中:

.intel_syntax noprefix

section .data

section .text
global _start

_start:
mov eax, 1 # some random comments

mov ebx, 0

int 80h

如果我运行 as file.s -o file.o,会产生以下错误:

is2_exit.s: Assembler messages:
is2_exit.s:3: Error: no such instruction: `section .data'
is2_exit.s:5: Error: no such instruction: `section .text'
is2_exit.s:6: Error: no such instruction: `global _start'
is2_exit.s:13: Error: junk `h' after expression

似乎根本没有考虑.intel_syntax。怎么了?

最佳答案

您似乎对某些指令以及十六进制文字使用了 NASM 语法。您需要更改它们以使用 GNU AS 语法。

您应该使用.section name(带前导点)而不是section name。在 .section .text.section .data 的情况下,您可以将它们简化为 .text.data.

同样,global symbol在GNU AS语法中应该是.global symbol(或.globl symbol)。


关于十六进制文字,manual 是这样说的:

A hexadecimal integer is '0x' or '0X' followed by one or more hexadecimal digits chosen from `0123456789abcdefABCDEF'.

所以80h应该写成0x80(或0X80)。

关于linux - 将 GAS 与 .intel_syntax 一起使用时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36034107/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com