gpt4 book ai didi

c++ - 为什么 nasm 说我在 g++ 创建的程序集中有错误?

转载 作者:太空狗 更新时间:2023-10-29 23:53:44 25 4
gpt4 key购买 nike

我有这个 C++ 代码:

#include <iostream>
using namespace std;

int main () {

char chr[] = "111111111111";
int pop = 9999;
cout << chr << (pop+1) << endl;

}

当我在 shell(64 位 linux)g++ -S hello.cpp 中执行时,我得到了汇编代码:

当我在上面使用 nasm hello.s 时,它说它包含很多错误,例如:

instruction needed
expression syntax error
symbol `popq' redefined

可能是因为它是64位的?如何编译我用 g++ 创建的 .s?

最佳答案

GCC 生成的汇编程序使用的是所谓的 AT&T 语法,这与 nasm 使用的 Intel 语法不同。您必须使用 GCC 汇编程序 (as) 来编译 GCC 生成的汇编程序文件。

参见例如http://en.wikipedia.org/wiki/GNU_Assembler#Criticism .

有关 GNU 汇编程序语法的更多信息,请参阅 http://en.wikibooks.org/wiki/X86_Assembly/GAS_Syntax .

关于c++ - 为什么 nasm 说我在 g++ 创建的程序集中有错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9465098/

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