如何查看代码块中的汇编代码?
How to view assembly code in codeblocks?
我想查看我的 C
代码的汇编版本,并且我了解到 -S
选项可以显示它,但是在使用该选项时出现此错误:
cannot specify -o with -c, -S or -E with multiple files
除此之外,我使用的唯一编译器选项是:-m64
和 -Wfatal-errors
。我使用 Codebloc::Blocks
IDE 和 mingw64
编译器。源文件是a43.c
,我在这个地方插入了选项:
我做的对吗?我更喜欢使用 GUI 而不是命令行。
如果你在Linux,你可以使用gcc来编译代码,
和 objdump -M intel -D a.out 其中 a.out 是您的编译代码,-M intel 是输出到 intel 语法或删除 -M intel .
但是您也可以使用 gcc -S code.c -o asm_code 在其他地方查看汇编语言输出。
编译器选项:
-c # compile only (don't link)
-S # assemble only (don't compile or link)
-E # preprocess only (don't assemble, compile or link)
是互斥的。此外,您不能指定:
-o foo.o # write output to `foo.o`
如果您指定多个输入源文件。
您正在将 -S a43.c
添加到 其他编译器选项 。那意味着你
正在将它们添加到项目的现有编译选项中。那些
默认情况下选项已经包含 -c
,因为这是 compile 的选项,
所以添加 -S
与 -c
冲突。
-S
不接受任何参数,特别是没有文件名参数。它说
gcc
仅 assemble(不编译或 link)输入文件,无论它们是什么。所以添加:
-S a43.c
以及添加 -S
到现有选项,添加一个输入文件,
a43.c
,到项目的编译器选项。但当然 Code::Blocks 会添加
每当编译其中一个时,编译器选项的输入文件的名称
项目中的文件。所以命令行中会有两个个源文件名。
因此错误:
cannot specify -o with -c, -S or -E with multiple files
如果您想修改 Code::Blocks 编译选项,使它们 也
生成编译的每个文件的汇编列表,然后删除
-S a43.c
来自其他编译器选项并将其替换为
-save-temps
然后,每当gcc在工程中编译一个文件foo.c
时,它会保存
中间文件为:
foo.s # The assembly
foo.i # The preprocessed source
这些文件将保存在与 foo.c
本身相同的目录中;不在
输出目标文件 foo.o
的目录。
我想查看我的 C
代码的汇编版本,并且我了解到 -S
选项可以显示它,但是在使用该选项时出现此错误:
cannot specify -o with -c, -S or -E with multiple files
除此之外,我使用的唯一编译器选项是:-m64
和 -Wfatal-errors
。我使用 Codebloc::Blocks
IDE 和 mingw64
编译器。源文件是a43.c
,我在这个地方插入了选项:
我做的对吗?我更喜欢使用 GUI 而不是命令行。
如果你在Linux,你可以使用gcc来编译代码, 和 objdump -M intel -D a.out 其中 a.out 是您的编译代码,-M intel 是输出到 intel 语法或删除 -M intel . 但是您也可以使用 gcc -S code.c -o asm_code 在其他地方查看汇编语言输出。
编译器选项:
-c # compile only (don't link)
-S # assemble only (don't compile or link)
-E # preprocess only (don't assemble, compile or link)
是互斥的。此外,您不能指定:
-o foo.o # write output to `foo.o`
如果您指定多个输入源文件。
您正在将 -S a43.c
添加到 其他编译器选项 。那意味着你
正在将它们添加到项目的现有编译选项中。那些
默认情况下选项已经包含 -c
,因为这是 compile 的选项,
所以添加 -S
与 -c
冲突。
-S
不接受任何参数,特别是没有文件名参数。它说
gcc
仅 assemble(不编译或 link)输入文件,无论它们是什么。所以添加:
-S a43.c
以及添加 -S
到现有选项,添加一个输入文件,
a43.c
,到项目的编译器选项。但当然 Code::Blocks 会添加
每当编译其中一个时,编译器选项的输入文件的名称
项目中的文件。所以命令行中会有两个个源文件名。
因此错误:
cannot specify -o with -c, -S or -E with multiple files
如果您想修改 Code::Blocks 编译选项,使它们 也 生成编译的每个文件的汇编列表,然后删除
-S a43.c
来自其他编译器选项并将其替换为
-save-temps
然后,每当gcc在工程中编译一个文件foo.c
时,它会保存
中间文件为:
foo.s # The assembly
foo.i # The preprocessed source
这些文件将保存在与 foo.c
本身相同的目录中;不在
输出目标文件 foo.o
的目录。