c语言汇编编译器
㈠ 在Compiler+Explorer上怎么将c语言转变为汇编语言
Compiler+Explorer是一个在线编译器,可以将源代码转换为汇编代指拍码。唯租羡如果想将C语言转型敬变为汇编语言,请按以下步骤操作:
访问Compiler+Explorer的官方网站。
在代码编辑器中编写C语言代码。
选择编译器版本,如gcc或clang,并在“Options”选项卡中选择汇编语言格式。
点击“Compile”按钮,Compiler Explorer将生成汇编代码。
点击“Asm”标签查看汇编代码。
㈡ maplab用C语言编写程序需要C编译器那么mplab如果用汇编语言编写还需要编译器吗
C语言与汇编语言都是高级语言,都需要经过编译器编译为机器语言。常用的C编译器有有CCS,HITECH,picc18,picc30等。另外汇编编译器mplab已经绑定安装了不需要另外安装。
—————————来自Just_Engineer的解答,希望可以帮到你。————————————
㈢ C语言编译器是什么
C语言是一门面向过程的计算机编程语言,与C++、Java等面向对象编程语言有所不同。C语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、仅产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。C语言描述问题比汇编语言迅速,工作量小、可读性好,易于调试、修改和移植,而代码质量与汇编语言相当。C语言一般只比汇编语言代码生成的目标程序效率低10%~20%。因此,C语言可以编写系统软件。[2]
二十世纪八十年代,美国国家标准局为了避免各开发厂商用的C语言语法产生差异,给C语言制定了一套完整的美国国家标准语法,称为ANSI C。作为C语言最初的标准。[3]2011年12月8日,国际标准化组织(ISO)和国际电工委员会(IEC)发布的C11标准是C语言的第三个官方标准,也是C语言的最新标准,该标准更好的支持了汉字函数名和汉字标识符,一定程度上实现了汉字编程。
C语言编译器普遍存在于各种不同的操作系统中,例如Microsoft Windows, Mac OS X, linux, Unix等。C语言的设计影响了众多后来的编程语言,例如C++、Objective-C、Java、C#等。
例:
#include <stdio.h>
int main() {
printf("Hello,world!");
return 0;
}
编译运行将输出: Hello,world!
㈣ c语言编译器是用汇编语言写的吗
这个是肯定的。算法优化,首先是逻辑描述的精炼化。至于C,只是计算逻辑到计算机模式的一种映射,而汇编仅是利用特殊计算机指令的一个更深的藕荷。 不过有一点,C语言由于是计算逻辑到计算机模式的映射,所以不单单考虑算法本身,还肩负数据组织的实现。数据流动方式,数据组织方式,对计算性能的影响也很大。这要看是否和计算机组成原理相贴近。其实这块也是侧重逻辑的设计,而不是具体机器指令的实现,因此汇编是无能为力的。 不过在DSP等特殊CPU架构,C语言和编译器无法很好的将上述逻辑转换为机器指令,或者C本身的逻辑无法很好的贴近CPU的特性,那么还是得汇编。一个典型的例子就是如何使用DSP的并行指令(通常的矢量计算)和并发指令集,几个不同的指令(隶属不同处理单元)的同时执行。使用C语言无法描述清楚这些逻辑方式,而编译器又太水,则还是不得不用汇编。此时C语言仅能沦落到大的计算机组织特性的贴近,和整体框架,模块的设计上。细节方面无能为力了。
㈤ 从C语言源程序到汇编语言程序,C语言编译器完成何种处理
一个编译可实为解释的过程,把一条条C语言解释成相应的汇编语言组。
㈥ c语言编译器如何运行
编译共分为四个阶段:预处理阶段、编译阶段、汇编阶段、链接阶段。
1、预处理阶段:
主要工作是将头文件插入到所写的代码中,生成扩展名为“.i”的文件替换原来的扩展名为“.c”的文件,但是原来的文件仍然保留,只是执行过程中的实际文件发生了改变。(这里所说的替换并不是指原来的文件被删除)
2、汇编阶段:
插入汇编语言程序,将代码翻译成汇编语言。编译器首先要检查代码的规范性、是否有语法错误等,以确定代码的实际要做的工作,在检查无误后,编译器把代码翻译成汇编语言,同时将扩展名为“.i”的文件翻译成扩展名为“.s”的文件。
3、编译阶段:
将汇编语言翻译成机器语言指令,并将指令打包封存成可重定位目标程序的格式,将扩展名为“.s”的文件翻译成扩展名为“.o”的二进制文件。
4、链接阶段:
在示例代码中,改代码文件调用了标准库中printf函数。而printf函数的实际存储位置是一个单独编译的目标文件(编译的结果也是扩展名为“.o”的文件),所以此时主函数调用的时候,需要将该文件(即printf函数所在的编译文件)与hello world文件整合到一起,此时链接器就可以大显神通了,将两个文件合并后生成一个可执行目标文件。
㈦ 从C语言源程序到汇编语言程序,C语言编译器完成何种处理
编译器就是把高级语言转换成机器语言,就是二进制代码。
汇编语言可以说是机器语言的助记符,转换比较容易,基本上就是二进制直接替换。
高级语言就复杂了,转换起来很是麻烦,并且需要优化,所以编译器是个大的软件工程。
㈧ 现在学习c语言都是用什么编译器
初学者用的一般是TC编译器。
名词解释
c语言
C语言是一种计算机程序设计语言,属高级语言范畴。它既具有高级语言的特点,又具有汇编语言的特点。它可以作为工作系统设计语言,编写系统应用程序,也可以作为应用程序设计语言,编写不依赖计算机硬件的应用程序,代码清晰精简,十分灵活。
C语言,是一种通用的、过程式的编程语言,广泛用于系统与应用软件的开发。具有高效、灵活、功能丰富、表达力强和较高的移植性等特点,在程序员中备受青睐。最近25年是使用最为广泛的编程语言。
C语言是由UNIX的研制者丹尼斯·里奇(Dennis Ritchie)于1970年 由 肯·汤普逊(Ken Thompson)所研制出的B语言的基础上发展和完善起来的。目前,C语言编译器普遍存在于各种不同的操作系统中,例如UNIX、MS-DOS、Microsoft Windows及Linux等。C语言的设计影响了许多后来的编程语言,例如C++、Objective-C、Java、C#等。
语言是1972年由美国的Dennis Ritchie设计发明的,并首次在UNIX操作系统的 DEC PDP-11 计算机上使用。它由早期的编程语言BCPL(Basic Combined Programming Language)发展演变而来,在1970年,AT&T贝尔实验室的Ken Thompson根据BCPL语言设计出较先进的并取名为B的语言,最后导致了C语言的问世。 而B语言之前还有A语言,取名自世界上第一位女程序员Ada(艾达)。
随着微型计算机的日益普及,出现了许多C语言版本。由于没有统一的标准, 使得这些C语言之间出现了一些不一致的地方。为了改变这种情况,美国国家标准研究所(ANSI)为C语言制定了一套ANSI标准,成为现行的C语言标准。
注:国际标准化组织ISO也制定的C语言的标准,目前被很多编译器所采用,如:GCC等。
C语言是世界上最流行、使用最广泛的高级程序设计语言之一。[2]
在操作系统和系统使用程序以及需要对硬件进行操作的场合,用C语言明显优于其它高级语言,许多大型应用软件都是用C语言编写的。
C语言绘图能力强,具有可移植性,并具备很强的数据处理能力,因此适于编写系统软件,三维,二维图形和动画。它是数值计算的高级语言。
常用的编译软件有Microsoft Visual C++,Borland C++,gcc(linux系统下最常用的编译器),Watcom C++ ,Borland C++, Borland C++ Builder,Borland C++ 3.1 for DOS,Watcom C++ 11.0 for DOS,GNU DJGPP C++, Lccwin32 C Compiler 3.1,Microsoft C,High C等。
同时也是中国国家计算机等级考试中计算机二级考试下的一个考试科目。
㈨ 有没有将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++代码对应的汇编语言文件。