编写编译器和操作系统用什么
㈠ 编译器一般由哪种语言开发
其实我在想为什么汇编语言生成一个简单的编译器后,可以用新生成的编译器再次生成编译器,例如,c语言开发C的编译器呢?
这是一个递归的思想,举个例子一看就明白了
用一个大的模具可以生成一个A模具,A模具可以做出来B模具,依次往下推,最终这个小模具可以做出来小盒子用来装东西。
第一个大模具肯定是手工做出来的第一个模具,但是有了这个大模具后,后面就可以用他自动的生成更多的模具,后面的各种模具加起来又可以造出来更精致的模具,
所以,自动第一个大模具造出来模具的时候,大模具就可以被抛弃了。
我们都知道编译程序通常分为下面五个阶段:
1)词法分析
2)语法分析
3)语义分析与中间代码产生
4)优化
5)目标代码生成
当然最难的一点就是目标代码的生成,这一阶段实现了最终的翻译,就是真正把原码翻译成可以被CPU直接计算的机器码(NativeCode)。
㈡ 现在学习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等。
同时也是中国国家计算机等级考试中计算机二级考试下的一个考试科目。
㈢ Windows、Linux、Mac等系统是用什么编程语言汇编的
它们的系统
多是用C语言加汇编语言制作的。。C语言的运行速度比较快。。开发效率也快,一般多是用来做系统开发的。。。而汇编语言是用来做底层硬件接口的,使个硬件相互传递数据的。。。一般的软件开发平台多是将代码转换成汇编语言的。。在通过汇编器转换成相应的二进制数据的(电脑唯一识别的代码)
㈣ 在Windows xp操作系统中用C语言编程,用什么编辑器和编译器好呢
如果只是写C的话,
编辑器用UltraEdit, 编译器用TurboC就足够了.
如果要求高,用VC也可以,终归是集成开发环境的.
还是要看你的目的,如果是上学, 学校让你用啥就用啥
如果是自己随便学,那就无所谓了
㈤ 请问DOS/WINDOW/LINUX都用什么编写各种语言工具又是用什么开发为什么可用多种语言开发操作系统
其中C语言占90%以上的代码量,并实现主要的操作系统功能。当然,操作系统不仅仅是一个内核,还有大量的必须组件和工具,这些组件和工具Windows主要基于C++编写,Linux主要基于C编写,Dos主要基于C和汇编编写。
语言工具的建构是一个循环递进的过程。早期的编程较少使用语言,那时候直接编写二进制的机器码,让CPU直接运行指令。后来程序比较大比较复杂了,这种方式就难以为继,于是就有人用二进制码写出一些简单的编译器,后来简单的编译器也不够用了,就再用它写出更复杂的编译器,如此不断反复,就有了我们今天的高级编译环境了。
一个编程语言不是先天就具有某种能力的,编程语言的能力是由编译器赋予的。语言就是一堆符号,编译器定义这些符号和二进制机器码之间的对应关系,所以只要编译器提供支持,你就可以用任何语言编写任何的程序。
命令提示符是一个程序,但不是DOS程序,更不是DOS,它是一个标准的Windows程序。你要取消它也没什么问题,你把它直接删除就行了。至于微软为什么不取消它,那是因为很多人需要它。就好像很多人需要MediaPlayer一样,你也可以问既然有了暴风影音,微软为什么不取消MediaPlayer。但是,控制台子系统是Windows的核心子系统,这个是不能取消的,因为大量的现有程序依赖于这个简单的有效的子系统来工作,如果取消这个子系统,很多现有程序就不能用了,将来一些程序的开发成本也会增加。命令提示符是基于控制台子系统的程序,并且,它提供了一个标准化的界面来通过命令行执行Windows任务。
Windows当然可以用来编写操作系统,只要你有合适的编译器。Windows下可以开发任何程序,包括手机程序、Linux程序、Unix程序、工控程序等等。关键是要有编译器。当然,你也可以写二进制码,那就不需要任何编译器了。
㈥ C/C++编译器是用什么写的
C语言和汇编,几乎所有的底层软件(操作系统 编译器 数据库底层等)都是C语言和汇编写的
㈦ 学习linux编程Ubuntu 操作系统,用什么编译器
当然是用gcc/g++编译器咯,支持C90、C99标准,在Ubuntu上的安装命令是:
apt-get
install
build-essential
这个安装命令安装的软件包包含了Linux编程需要的编译器和各种库文件,装上后就可以开始Linux编程了。
㈧ 如何用c语言编写简单的操作系统
C语言当然是可以写操作系统的,但是操作系统的编写一般都不仅仅只是用C语言编写的。
写操作系统需要编程语言提供以下几个特征:
1、跨平台,不能是只在某个平台下编译(VB就不行);
2、必须是编译型语言(PHP就不行),或者有一个非常高效的解释器;
3、必须有方便的操作硬件的功能,容易嵌入汇编(Java就不行);
4、兼容性要好,最好不同编译器编译的符号要基本相同,容易链接(C++不行,如果放弃Class的话C++基本可以);
5、编译器本身最好是由该语言自己完成的(大部分语言的编译器都是用C/C++写的);
6、开发者可以很方便的扩展、改造、或者使用第三方的运行库(大部分语言的库都无法修改);
7、开发者众多(小众语言就不行);
8、该语言开发操作系统的资料要足够完善。
所以总结下来,C语言是首选。
㈨ 操作系统、编译程序、实时控制等软件多数是用编写的
比如编译程序是如何知道 本机的硬件信息 而生成其对应的汇编代码的(汇编代码机器相关),是操作系统的提供了查询的接口?
没有。你当然要告诉编译器去使用哪种机器码。至于默认的那个,本来不同的系统上不同的CPU架构的编译器就是分开编译,写死在里面了的。
还有比如程序中静态分配的变量(并非指运行时动态分配的)的存储位置也是由操作系统分配的吗?然后我们看到的编译好的汇编代码里的那些地址只是类似于高级语言中的变量的标识符而已?(逻辑地址)
算是吧,编译器会统计所有全局变量的大小的总和,写在exe里面,exe被执行的时候会直接分配好,然后再在上面跑构造函数。
㈩ 适合win10系统的c语言编译器
桌面操作系统
对于当前主流桌面操作系统而言,可使用 VisualC++、GCC以及 LLVM Clang 这三大编译器。
Visual C++(简称 MSVC)只能用于 Windows 操作系统;GCC 和 LLVM Clang除了可用于Windows操作系统之外,主要用于 Unix/Linux操作系统。
像现在很多版本的 Linux 都默认使用 GCC 作为C语言编译器,而像 FreeBSD、macOS 等系统默认使用 LLVM Clang 编译器。由于当前 LLVM 项目主要在 Apple 的主推下发展的,所以在 macOS中,Clang 编译器又被称为 Apple LLVM 编译器。
MSVC 编译器主要用于 Windows 操作系统平台下的应用程序开发,它不开源。用户可以使用 Visual Studio Community 版本来免费使用它,但是如果要把通过 Visual Studio Community 工具生成出来的应用进行商用,那么就得好好阅读一下微软的许可证和说明书了。
而使用 GCC 与 Clang 编译器构建出来的应用一般没有任何限制,程序员可以将应用程序随意发布和进行商用。
MSVC 编译器对 C99 标准的支持就十分有限,加之它压根不支持任何 C11 标准,所以本教程中设计 C11 的代码例子不会针对 MSVC 进行描述。所幸的是,Visual Studio Community 2017 加入了对 Clang 编译器的支持,官方称之为——Clang with Microsoft CodeGen,当前版本基于的是 Clang 3.8。
也就是说,应用于 Visual Studio 集成开发环境中的 Clang 编译器前端可支持 Clang 编译器的所有语法特性,而后端生成的代码则与 MSVC 效果一样,包括像 long 整数类型在 64 位编译模式下长度仍然为 4 个字节,所以各位使用的时候也需要注意。
为了方便描述,本教程后面涉及 Visual Studio 集成开发环境下的 Clang 编译器简称为 VS-Clang 编译器。
嵌入式系统
而在嵌入式系统方面,可用的C语言编译器就非常丰富了,比如:
用于 Keil 公司 51 系列单片机的 Keil C51 编译器;
当前大红大紫的 Arino 板搭载的开发套件,可用针对 AVR 微控制器的 AVRGCC 编译器;
ARM 自己出的 ADS(ARM Development Suite)、RVDS(RealView Development Suite)和当前最新的 DS-5 Studio;
DSP 设计商 TI(Texas Instruments)的 CCS(Code Composer Studio);
DSP 设计商 ADI(Analog Devices,Inc.)的 Visual DSP++ 编译器,等等。
- 通常,用于嵌入式系统开发的编译工具链都没有免费版本,而且一般需要通过国内代理进行购买。所以,这对于个人开发者或者嵌入式系统爱好者而言是一道不低的门槛。
- 不过 Arino 的开发套件是可免费下载使用的,并且用它做开发板连接调试也十分简单。Arino 所采用的C编译器是基于 GCC 的。
- 还有像树莓派(Raspberry Pi)这种迷你电脑可以直接使用 GCC 和 Clang 编译器。此外,还有像 nVidia 公司推出的 Jetson TK 系列开发板也可直接使用 GCC 和 Clang 编译器。树莓派与 Jetson TK 都默认安装了 Linux 操作系统。
- 在嵌入式领域,一般比较低端的单片机,比如 8 位的 MCU 所对应的C编译器可能只支持 C90 标准,有些甚至连 C90 标准的很多特性都不支持。因为它们一方面内存小,ROM 的容量也小;另一方面,本身处理器机能就十分有限,有些甚至无法支持函数指针,因为处理器本身不包含通过寄存器做间接过程调用的指令。
- 而像 32 位处理器或 DSP,一般都至少能支持 C99 标准,它们本身的性能也十分强大。而像 ARM 出的 RVDS 编译器甚至可用 GNU 语法扩展。
- 下图展示了上述C语言编译器的分类。