Ⅰ 如何将C语言代码转换为对应的汇编代码
VC6.0下有两种方法:
(1)增加参数/FA:Project->Setting...,C/C++选项卡中的Project Options中增加参数/FA,编译后debug目录中将会增加对应源文件的汇编文件(*.asm)。
(2)如果想查看C语句对应的汇编代码的话,可以这样:F11单步调试,在debug工具栏中选择“disassembly”即可。每行C代码下面就是对应的汇编代码。
如果debug工具栏不见了,可在VC上方空白菜单处右键,选择“debug”即可弹出debug工具栏。
例如:
C代码程序:
int main()
{
int a = 3;
int b = 4;
int c = a + b;
printf("c=%d/n", c);
return 0;
}
对应的汇编代码程序(部分)如下:
5: int a = 3;
00401028 mov dword ptr [ebp-4],3
6: int b = 4;
0040102F mov dword ptr [ebp-8],4
7: int c = a + b;
00401036 mov eax,dword ptr [ebp-4]
00401039 add eax,dword ptr [ebp-8]
0040103C mov dword ptr [ebp-0Ch],eax
gcc下编译加参数-S,如gcc a.c -S,编译后会自动生成汇编文件a.asm。
Ⅱ C语言代码解释“Hello,world”
#include<stdio.h>
int main()
{
printf("hello world!
");//输出hello word!
return 1;// 返回1
}
Ⅲ 可以显示C语言编译成汇编语言全过程的编译器
如果你有用IDE的话,比如Visual Studio、Delphi等,应该都是可以设置C和汇编同时查看的。
一句C对应一句汇编,也相当于“单步编译”吧!
Ⅳ C语言的Hello Word
我用的是Visual Studio 2005(包含C++,其实是vc8.0),如果用vc的话情况应该也是差不多的。下面我就我的使用环境说一下怎么编译运行Hello World!
1、从开始菜单或用快捷方式打开vc,菜单file->new->project(或是文件->新建->工程)。
2、在弹出对话框左边选visual c++,再选win32,右边选win32 console application(或win32控制台程序),下边name(或名称)输入Helloworld(或你喜欢的名称,这个是工程的名称),单击OK(或确定)。
3、单击next下一步,或application settings程序设置,application type程序类型选择console application控制台程序。additional options附加选项里选上Empty project(空工程还是空项目忘记中文了)的勾,单击finish完成。
4、打开solution explorer解决方案浏览(忘记中文的名称了)(没有的话可以从view(视图)->solution explorer里调出),source file源文件右键单击,选add添加new item新项。
5、左边选code代码,右边选C++ file,下面name名称输入名称HelloWorld或你喜欢的,单击add添加。
6、把代码拷贝到HelloWorld.cpp中,即把
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
printf ("Hello World!\n");
system ("pause");
return 0;
}
拷贝到HelloWorld.cpp。
7、菜单上选build->build solution(建立->建立解决方案),或按F7亦可。接着在debug->start debuging(调试->开始调试),或按F5亦可。或不按F7直接按F5。不过一般先F7后F5。
这样就可以编译运行程序Helloworld了。主要问题是要先新建一个工程。
Ⅳ 有没有将c语言源代码转换成汇编语言的软件
如果只是想得到C语言或C++语言的汇编代码
可以通过指定编译器的选项来达成目的,这里我们用1998年生产的Windows平台VC6.0的SDK举例(以传统的命令行编译环境方式,对应的IDE集成开发环境可在工程》设置里在编译选项里加入/Fa即可):
开始》运行,输入cmd启动命令行,
若安装了VC6.0的SDK(或其IDE集成开发环境),默认路径为"C:\Program Files\Microsoft Visual Studio“
命令行输入"C:\Program Files\Microsoft Visual Studio\VC98\Bin\VCVARS32.BAT"回车执行初始化编译环境
命令行输入 mkdir CtoASMTest建立测试目录,并进入该目录,命令行输入 cd CtoASMTest
用记事本建立测试代码,命令行输入notepad CtoASM_test.c回车确认,输入以下测试C代码
int main(int argc,char* argv[]){
int i;
for(i = 0; i < argc; ++i){
printf("argv[%d] is:\t%s\n",i,argv[i]);
}
printf("CtoASM_test end.\n");
}
若直接默认编译,命令行输入cl CtoASM_test.c,则会产生对象文件*.obj和目标文件*.exe
命令行输入dir 列出测试目录文件清单如下,多了obj和exe编译产生的文件
CtoASM_test.c
CtoASM_test.exe
CtoASM_test.obj
若想得到c文件对应的汇编语言文件,可以指定汇编文件产生选项 /Fa,即cl /Fa CtoASM_test.c则会同时产生汇编文件CtoASM_test.asm,内容如下
TITLE CtoASM_test.c
.386P
include listing.inc
if @Version gt 510
.model FLAT
else
_TEXT SEGMENT PARA USE32 PUBLIC 'CODE'
_TEXT ENDS
_DATA SEGMENT DWORD USE32 PUBLIC 'DATA'
_DATA ENDS
CONST SEGMENT DWORD USE32 PUBLIC 'CONST'
CONST ENDS
_BSS SEGMENT DWORD USE32 PUBLIC 'BSS'
_BSS ENDS
_TLS SEGMENT DWORD USE32 PUBLIC 'TLS'
_TLS ENDS
FLAT GROUP _DATA, CONST, _BSS
ASSUME CS: FLAT, DS: FLAT, SS: FLAT
endif
PUBLIC _main
EXTRN _printf:NEAR
_DATA SEGMENT
$SG41 DB 'argv[%d] is:', 09H, '%s', 0aH, 00H
ORG $+3
$SG42 DB 'CtoASM_test end.', 0aH, 00H
_DATA ENDS
_TEXT SEGMENT
_argc$ = 8
_argv$ = 12
_i$ = -4
_main PROC NEAR
; File CtoASM_test.c
; Line 1
push ebp
mov ebp, esp
push ecx
; Line 3
mov DWORD PTR _i$[ebp], 0
jmp SHORT $L37
$L38:
mov eax, DWORD PTR _i$[ebp]
add eax, 1
mov DWORD PTR _i$[ebp], eax
$L37:
mov ecx, DWORD PTR _i$[ebp]
cmp ecx, DWORD PTR _argc$[ebp]
jge SHORT $L39
; Line 4
mov edx, DWORD PTR _i$[ebp]
mov eax, DWORD PTR _argv$[ebp]
mov ecx, DWORD PTR [eax+edx*4]
push ecx
mov edx, DWORD PTR _i$[ebp]
push edx
push OFFSET FLAT:$SG41
call _printf
add esp, 12 ; 0000000cH
; Line 5
jmp SHORT $L38
$L39:
; Line 6
push OFFSET FLAT:$SG42
call _printf
add esp, 4
; Line 7
mov esp, ebp
pop ebp
ret 0
_main ENDP
_TEXT ENDS
END
其中还可以产生其它文件,可以参考编译器的选项说明,命令行输入cl /?查看帮助,其中关于产生的输出文件类型可以有以下选择
-OUTPUT FILES-
/Fa[file] name assembly listing file /Fo<file> name object file
/FA[sc] configure assembly listing /Fp<file> name precompiled header file
/Fd[file] name .PDB file /Fr[file] name source browser file
/Fe<file> name executable file /FR[file] name extended .SBR file
----------------------------------------------
补充,
其它平台的编译器也有类似的汇编输出选项,如类Unix平台的GNU编译器cc -S CtoASM_test.c和gcc -S CtoASM_test.c 都可以通过指定-S选项产生c或c++代码对应的汇编语言文件。
Ⅵ C语言编译后是生成汇编代码还是直接生成机器代码
不会是这两种语言代码,而是编译后直接生成二进制文件(.obj文件),再通过连接器链接成二进制文件(.exe/.dll/.ocx/.sys等)
Ⅶ C语言怎样转换成汇编语言
keilc里面,如果单片机c语言编译完成后,可以进入debug仿真模式,那么打开disassembly
windows窗口,就可以看到c及对应的汇编。
Ⅷ C语言hello,world;
你程序编写好,用GCC 编译器 你可以用以下命令查看
gcc hellowold.c -E -o helloworld.i (这个是第一步,预编译)
gcc helloworld.oi -S -o helloworld.o(这个是编译)
gcc helloworld -C -o helloworld.o (这个是汇编)
gcc helloworld.o -o a.out 这个是链接阶段,就是生成结果的阶段
Ⅸ 我的c语言代码如何变成汇编语言
c语言代码编译连接后的exe文件用16位编辑器打开看到的就是机器码,用调试软件打开看到的是汇编语言代码。