第一个C编译器移植到GCC

2021-04-07 14:52:37

最早的C编译器到现代GCC的港口。编译器输出可以在PDP-11仿真器上编译和运行的PDP-11汇编代码。编译器仅在32位模式下运行,因为原始代码假定指针大小和字大小是相同的。

注意:如果您在缺失&#34上获取错误;位/ libc-header-start.h"标题确保已安装32位Libc。

硬部分是设置仿真器,将文件传输到它(!)并运行汇编程序。可提供基于SIMH的一个非常早期的UNIX实现。对于Windows,还有一个预先构建的二进制文件

我无法让磁带仿真器工作,以便最终获得传输文件的黑客解决方案。模拟器允许您通过Telnet登录,因此通过在模拟器上启动文本编辑器并将字符流传输到其中,然后保存和关闭文件来复制文件。

此外,如果关闭“会话丢失的连接”,则会将连接与使用NCAT的HACK保持一致。

#start emulatorpdp11 simh.cfg#向模拟器打开管道#如果使用预设的Windows模拟器,请使用端口12323ncat -lk -p 5556 | ncat localhost 5555#发送登录用户名仿真器回声根|仿真器/ emucat #copy文件通过将其键入Edemulator / cpfile fizzbuzz.s / fizzbz.s#call汇编程序和linkeremulator / emucc /fizzbz.s#执行编译的程序回声A.Out |仿真器/美发

请注意,该文件在仿真器上称为fizzbz.s。这是因为这里使用的UNIX只处理8个字符的长文件名!

此版本的C是1972年左右。虽然一般语法与今天相同,但有大量缺少的功能: 即使有浮点和双倍的关键字,浮点计算也没有实现,甚至不能编写浮点文字 类型系统非常弱:指针,字符,INT可以自由转换成彼此 未选中函数参数的类型,任何功能都可以传递给任何功能 只能定义整数全局变量,语法是奇怪的(请参阅HelloWorld示例) 变量名称可以是任何长度,但仅使用前8个字符; 即,Deadbeef1和Deadbeef2有效地是相同的变量