ansi c是c语言编译器,SmallerC: SmallerC 是一个简单而小型的单程 C 编译器,目前支持 C89 / ANSI C 之间大部分 C 语言通用,和C99(除去一些 C89 和加上一..._绾绾居的博客-程序员宅基地

技术标签: ansi c是c语言编译器  

Smaller C is a simple and small single-pass C compiler,

currently supporting most of the C language common between C89/ANSI C

and C99 (minus some C89 and plus some C99 features).

Currently it generates 16-bit and 32-bit 80386+ assembly code for NASM

that can then be assembled and linked into DOS, Windows, Linux and Mac OS X

programs.

(You may use YASM or FASM instead of NASM)

Code generation for MIPS CPUs is also supported (primarily for RetroBSD).

The compiler is capable of compiling itself.

The core compiler comes with a preprocessor (ucpp), a linker and a compiler

driver (the driver invokes the preprocessor, the core compiler, the assembler,

and the linker and supports options similar to those of gcc).

The standard C library is work-in-progress and it's close to completion.

See the project documentation for more up-to-date details:

https://github.com/alexfru/SmallerC/tree/master/v0100/doc

For the lack of a better place, you can discuss Smaller C here:

https://hackaday.io/project/5569-smaller-c

Links:

NASM: http://nasm.us/

YASM: http://yasm.tortall.net/

FASM: http://flatassembler.net/

CWSDPMI: https://sandmann.dotster.com/cwsdpmi/

HX DOS Extender: https://web.archive.org/web/20141003032346/http://www.japheth.de/

RetroBSD: http://retrobsd.org/

Other projects based on/using Smaller C:

"ROM C" (like ROM Basic but C): https://hackaday.io/project/29198-native-c-pic32-color-video-on-tv

FYS OS: http://www.fysnet.net/fysos.htm

NewBasic Compiler: http://fysnet.net/nbc.htm

Sweet32 CPU and toolchain: https://github.com/Basman74/Sweet32-CPU

Normative and other useful documents on C:

C99 + TC1 + TC2 + TC3, WG14 N1256:

http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1256.pdf

Dave Prosser's C preprocessing algorithm annotated by Diomidis D. Spinellis:

http://www.spinellis.gr/blog/20060626/index.html

Rationale for C99:

http://www.open-std.org/jtc1/sc22/wg14/www/docs/C99RationaleV5.10.pdf

The New C Standard: An Economic and Cultural Commentary:

http://www.knosof.co.uk/cbook/cbook.html

The Development of the C Language by Dennis M. Ritchie:

https://www.bell-labs.com/usr/dmr/www/chist.html

The Standard C Library by P.J. Plauger

https://www.amazon.com/dp/0131315099

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_29069131/article/details/117104638

智能推荐

RIP与静态路由重分布的配置_weixin_34397291的博客-程序员宅基地

RIP与静态路由的重分布配置如上例图所示:“RIP与OSPF路由重分布例子”switchA(config)#router ripswitchA(config-router)#network 192.168.10.0 switchA(config-router)#network 192.168.20.0switchA(config-router)#net...

System.out.println与System.err.println的区别_WK_ITing的博客-程序员宅基地_system.err.println

同时使用了System.out.println与System.err.println()打印输入内容,结果看到的内容和预想的不一样,顺序与预料的不同并不是因为err和out的区别导致,而是因为他们是两个流,由于缓存原因导致输出顺序不同。1、System.out.println 能重定向到别的输出流,这样的话你在屏幕上将看不到打印的东西了, 而System.err.println只能在屏幕上

第四十三章 微服务CICD(5)- gitlab + jenkins + docker + dockerregsitry_chuifuhuo6864的博客-程序员宅基地

一、总体流程 部署: 开发机(mac) ip:11.11.11.11 docker:1.12.1 部署机(centos7) ip:10.211.55.4 docker:1.12.3 生产机(centos7...

C++ 操作64位系统,默认读取Wow6432Node子键的解决方法。_youxiazzz12的博客-程序员宅基地

原先一个win32程序好好地,由于组里不少人用了win 7 64位操作系统,指出原程序有bug,程序不能在64位的操作系统上跑。搞了很久,后来网上搜到一些资料说:64位的操作系统:xp下具体的程序在电脑中的位置位于:HKEY_LOCAL_MACHINE\SOFTWAREvista中是位于HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node如果你在vis

ES6学习(函数扩展)_qq_34231078的博客-程序员宅基地

今天主要是学习ES6中函数的扩展。例如常用的箭头函数、函数参数默认值等。一、箭头函数ES6可以使用“=>”箭头来定义函数。我们为什么喜欢使用箭头函数呢,因为它可以简化我们的代码,使之看起来更美观。如果定义的函数不需要传参则使用空括号来;传一个参数时,可以直接使用这个参数;传参大于一个时,则需要使用括号把参数括起来。//不传参数var func = () => 1;// 等同于var func= function () { return 1;};//一个参数var fu

Service Mesh框架对比:Linkerd vs. Istio_cuifubao6000的博客-程序员宅基地

本文由公众号EAWorld翻译发表,转载需注明出处。作者:Marcus Schiesser译者:白小白原题:Comparing Service Meshes: Linkerd vs. Istio原文:http://t.cn/...

随便推点

如何实现自定义的 Spring Boot Starter?_Jake Weng的博客-程序员宅基地

前言Spring Boot 可以省略众多的繁琐配置,它的众多 starter 可以说是功不可没。例如 Spring Boot 中集成redis,只需要 pom.xml 中引入 spring-boot-starter-data-redis,配置文件中加入s pring.redis.database 等几个关键配置项即可,常用的 starter 还有 spring-boot-starter-web、spring-boot-starter-test、spring-boot-starter-jdbc,相比于传统的

GO语言退出协程之超时设置_Crazyjy的博客-程序员宅基地

GO语言协程超时任务设置协程超过一定时间后退出package mainimport ( "fmt" "time")func run(done chan string) { t := time.NewTimer(time.Second * time.Duration(2)) defer t.Stop()L: for { select { case <-done: fmt.Println("run stop signal") break L // 跳出for

微信扫码登录的几秒钟里,到底发生了什么_苏南South的博客-程序员宅基地

一想到你要关注我↑就忍不住有点紧张0.0...事情经过这天中午,小A吃完午饭,摊在自己的躺椅上,想趁吃饱喝足的午后时间静静享受独自的静谧。干点什么好呢?小A单手操作鼠标打开了一个陌生而...

远程调试Debug(Eclipse/IDEA)_panzihao_beijing的博客-程序员宅基地

Eclipse配置(spring—boot项目):配置Maven首先在Maven的pom.xml中配置好如下信息:<project> ... <build> ... <plugins> ... <plugin> &l...

企业内部知识管理系统选型调研_weixin_33737774的博客-程序员宅基地

1,Confluence (期望系统)国内代理商:http://www.unlimax.com/index.html内含询价,售前,支持电话等信息。公开报价:http://www.unlimax.com/price.html四五百人规模公开报价约15万元。优点:功能强大,使用方便。缺点:收费商业软件。2,gitlab自带的wiki功能...