35 个解决方案
#1
最开始的是机器码写的。
#2
应该是吧
#3
想用什么语言就用什么语言。
用不着再去发明*了。就算是新的芯片,新的指令组,也可以在其他系统上先编译成目标码的编译器,拿过来使用。
还用01码写,那不成原始人了。
不过汇编语言的编译器相比高级语言,实在是太简单了。用汇编语言写就可以胜任了(从工作量上说)。
用不着再去发明*了。就算是新的芯片,新的指令组,也可以在其他系统上先编译成目标码的编译器,拿过来使用。
还用01码写,那不成原始人了。
不过汇编语言的编译器相比高级语言,实在是太简单了。用汇编语言写就可以胜任了(从工作量上说)。
#4
直接用指令码写出第一个汇编语言编译器.
#5
什么语言都可以。
#6
问楼上前辈:
教授上课的时候没有这样说过呀。好像是用机器码写的吧?
教授上课的时候没有这样说过呀。好像是用机器码写的吧?
#7
nasm是c语言写的,快去下载研究
#8
第一个编译器确定一定以及肯定是用1和0写的!
------------------------------
是先有蛋呢还是先有鸡呢?
------------------------------
是先有蛋呢还是先有鸡呢?
#9
我最初猜想大概也是机器码写的.(只是觉得好象太原始了).
汇编语言编译器理论上当然是什么语言写都可以,比如C语言,但是这个C语言的编译器又该用什么语言写呢?
所以应该终有一个语言编译器是0,1来写.
这些都是我的猜想.发出来供大家讨论,也是想得到一些证实.
汇编语言编译器理论上当然是什么语言写都可以,比如C语言,但是这个C语言的编译器又该用什么语言写呢?
所以应该终有一个语言编译器是0,1来写.
这些都是我的猜想.发出来供大家讨论,也是想得到一些证实.
#10
现在的汇编编译器可以用任何语言写。
#11
估计,起初先是机器语言编写出一个编译器吧.
#12
可以用任何语言写...理论上是机器码写的...
#13
研究第一个编译器是历史学家的事,估计也未必只有一个。往历史上看,那肯定至少有一个编译器是01码写的,但是,要清楚,这是一个进化过程,第一个写的人,未必认为写的是编译器。最有可能的事是(助记符)。把一组01码用一个简单符号表示。
如果第一把铁锤是用石头砸出来了,那第二把就可以用第一把来砸,用不着还用石块了。
换了个地方、换了一种样子的铁锤也用不着还从用石头砸开始。
编译器也一样。c语言的编译器,当然可以用c语言来写,而且实际上也是。明天你发明一个X语言,也用不着从汇编开始,一样可以从你习惯的语言开始写第一个编译器(比如C)
#14
起初是用机器码
现在是用汇编语言
现在是用汇编语言
#15
说二句题外话
1 汇编语言有二类是不同的,一类是基于机器指令,并不依赖OS的,这样的编译器基本是硬件构造;另一类是依赖OS,大概就是大家谈的,这类汇编语言其实与如早期单片机语言不相同了,是基于OS对硬件或机器指令"命令化"(准确说法如句柄\API什么的),再由高级汇编编译器去使用的;
2 并不是什么语言都行,应该是不同的汇编语言对硬件依赖很大的,如果HTML也算是语言的话,应该地球人就不好做汇编器了.
1 汇编语言有二类是不同的,一类是基于机器指令,并不依赖OS的,这样的编译器基本是硬件构造;另一类是依赖OS,大概就是大家谈的,这类汇编语言其实与如早期单片机语言不相同了,是基于OS对硬件或机器指令"命令化"(准确说法如句柄\API什么的),再由高级汇编编译器去使用的;
2 并不是什么语言都行,应该是不同的汇编语言对硬件依赖很大的,如果HTML也算是语言的话,应该地球人就不好做汇编器了.
#16
理论上什么语言都行,事实上是C。
#17
不大认同。
1、汇编语言没这么分类的,所谓的操作系统依赖不过是调用OS的API。作为语言本身并不依赖这些API。
2、属于吹毛求疵,自然语言的歧义性到处都存在,根据上下文理解,应该没人会理解成用HTML语言写汇编器。
#18
编译器不过是一个翻译机,编译器自身的运行环境理论上无关紧要。
#19
汇编100% 是依赖机器的 每个CPU都有自己的一套汇编指令
#20
没想到有争论:
1 基于单片机的开发系统,使用的单片机语言也是汇编语言,不过并没有OS吧,你用什么API?如2051的定时器;
2 基于DOS的开发系统或其它有OS的系统,是不是有OS的呢?
我想这点应该是明了的吧!
1 基于单片机的开发系统,使用的单片机语言也是汇编语言,不过并没有OS吧,你用什么API?如2051的定时器;
2 基于DOS的开发系统或其它有OS的系统,是不是有OS的呢?
我想这点应该是明了的吧!
#21
看看语言发展的历史,可以看出汇编语言的位置.
机器代码(早期的译码机)-->代码集合(如早期运算器)-->离散微命令--->微指令--->机器级汇编-->.......
**********************
不大认同。
1、汇编语言没这么分类的,所谓的操作系统依赖不过是调用OS的API。(后面看不懂省了)
为什么没有这么分类的?呵呵那如何分呢?
机器代码(早期的译码机)-->代码集合(如早期运算器)-->离散微命令--->微指令--->机器级汇编-->.......
**********************
不大认同。
1、汇编语言没这么分类的,所谓的操作系统依赖不过是调用OS的API。(后面看不懂省了)
为什么没有这么分类的?呵呵那如何分呢?
#22
谁能给出个实例说说,带注释的。谢谢
#23
硬件相关是汇编的特殊性,
跟操作系统有什么关系,
你能跟据系统不同把c语言分成windows版和linux版?
你能把c分成依赖os和不依赖的?
#24
第一个编译器当然是用机器指令写,很简的道理
#25
只是一个工具而已,跟dos下的DIR命令比并没有什么特别,你想用什么语言写就用什么语言写,如果不怕麻烦,甚至可以用VB脚本来写,当然,那跑起来可能很慢。
#26
看来LZ是想写个编译器出来了,用自己最熟悉的语言就好,只要目的能达到就行.
#27
最最初的编译器应该只能是通过机器语言字节码构造出来的.但是现在基本上使用C/C++为多.
#28
汇编语言编译器其实用什么语言写都无所谓,但是现在的MS操作系统占了绝大多数,系统其本身就是由C语言所写的,所以汇编语言编译器用C来写个人认为与系统的兼容性可以达到最好的程度,新手之见,各位见笑了!
#29
这个不限,能输出二进制文件的语言都可以
你用解释型(Python,Ruby)的语言写一个都可以,
如IA-32,你知道它的所有指令集就OK了。。。。。
你用解释型(Python,Ruby)的语言写一个都可以,
如IA-32,你知道它的所有指令集就OK了。。。。。
#30
最初的汇编语言编译器, 一定是用机器语言编写的.
但是如果有了一个可以执行的程序, 那么用什么语言都可以了, 只需要写出一个在现有操作系统下能够执行的程序, 然后在程序中添加将汇编字符进行翻译到二进制的机器语言即可.
编程语言的编译原理太简单了, 一般高级语言初学者都可以编程出这样一个程序.
但是如果有了一个可以执行的程序, 那么用什么语言都可以了, 只需要写出一个在现有操作系统下能够执行的程序, 然后在程序中添加将汇编字符进行翻译到二进制的机器语言即可.
编程语言的编译原理太简单了, 一般高级语言初学者都可以编程出这样一个程序.
#31
第一个应该是机器语音
也就是0101这样写出来的
要知道当时艾尼克的程序还是人为的开关来控制呢...
不就是0101嘛 当然有人会去做这事咯
也就是0101这样写出来的
要知道当时艾尼克的程序还是人为的开关来控制呢...
不就是0101嘛 当然有人会去做这事咯
#32
mark
#33
类似鸡和蛋的问题:
比如c语言编译器:
第一个c语言编译器是用汇编写的(因为没有更高级的编译器),之后用c语言重写了c语言编译器(因为有了c语言编译器).
在linux下用源代码装Gcc要编译安装两次:第一次用系统已经存在的gcc编译一次,第二次用第一次编译生成的新的gcc再编译一次.
因为老的编译器编译出的代码质量与新的编译器可能不是很好.
比如c语言编译器:
第一个c语言编译器是用汇编写的(因为没有更高级的编译器),之后用c语言重写了c语言编译器(因为有了c语言编译器).
在linux下用源代码装Gcc要编译安装两次:第一次用系统已经存在的gcc编译一次,第二次用第一次编译生成的新的gcc再编译一次.
因为老的编译器编译出的代码质量与新的编译器可能不是很好.
#34
楼上说鸡生蛋,蛋生鸡的问题,确实挺像的。
但我理解,最底层的代码,还是用最接近机器的方式的
但我理解,最底层的代码,还是用最接近机器的方式的
#35
机器码
3键键盘
0,1,backspace
3键键盘
0,1,backspace
#1
最开始的是机器码写的。
#2
应该是吧
#3
想用什么语言就用什么语言。
用不着再去发明*了。就算是新的芯片,新的指令组,也可以在其他系统上先编译成目标码的编译器,拿过来使用。
还用01码写,那不成原始人了。
不过汇编语言的编译器相比高级语言,实在是太简单了。用汇编语言写就可以胜任了(从工作量上说)。
用不着再去发明*了。就算是新的芯片,新的指令组,也可以在其他系统上先编译成目标码的编译器,拿过来使用。
还用01码写,那不成原始人了。
不过汇编语言的编译器相比高级语言,实在是太简单了。用汇编语言写就可以胜任了(从工作量上说)。
#4
直接用指令码写出第一个汇编语言编译器.
#5
什么语言都可以。
#6
问楼上前辈:
教授上课的时候没有这样说过呀。好像是用机器码写的吧?
教授上课的时候没有这样说过呀。好像是用机器码写的吧?
#7
nasm是c语言写的,快去下载研究
#8
第一个编译器确定一定以及肯定是用1和0写的!
------------------------------
是先有蛋呢还是先有鸡呢?
------------------------------
是先有蛋呢还是先有鸡呢?
#9
我最初猜想大概也是机器码写的.(只是觉得好象太原始了).
汇编语言编译器理论上当然是什么语言写都可以,比如C语言,但是这个C语言的编译器又该用什么语言写呢?
所以应该终有一个语言编译器是0,1来写.
这些都是我的猜想.发出来供大家讨论,也是想得到一些证实.
汇编语言编译器理论上当然是什么语言写都可以,比如C语言,但是这个C语言的编译器又该用什么语言写呢?
所以应该终有一个语言编译器是0,1来写.
这些都是我的猜想.发出来供大家讨论,也是想得到一些证实.
#10
现在的汇编编译器可以用任何语言写。
#11
估计,起初先是机器语言编写出一个编译器吧.
#12
可以用任何语言写...理论上是机器码写的...
#13
研究第一个编译器是历史学家的事,估计也未必只有一个。往历史上看,那肯定至少有一个编译器是01码写的,但是,要清楚,这是一个进化过程,第一个写的人,未必认为写的是编译器。最有可能的事是(助记符)。把一组01码用一个简单符号表示。
如果第一把铁锤是用石头砸出来了,那第二把就可以用第一把来砸,用不着还用石块了。
换了个地方、换了一种样子的铁锤也用不着还从用石头砸开始。
编译器也一样。c语言的编译器,当然可以用c语言来写,而且实际上也是。明天你发明一个X语言,也用不着从汇编开始,一样可以从你习惯的语言开始写第一个编译器(比如C)
#14
起初是用机器码
现在是用汇编语言
现在是用汇编语言
#15
说二句题外话
1 汇编语言有二类是不同的,一类是基于机器指令,并不依赖OS的,这样的编译器基本是硬件构造;另一类是依赖OS,大概就是大家谈的,这类汇编语言其实与如早期单片机语言不相同了,是基于OS对硬件或机器指令"命令化"(准确说法如句柄\API什么的),再由高级汇编编译器去使用的;
2 并不是什么语言都行,应该是不同的汇编语言对硬件依赖很大的,如果HTML也算是语言的话,应该地球人就不好做汇编器了.
1 汇编语言有二类是不同的,一类是基于机器指令,并不依赖OS的,这样的编译器基本是硬件构造;另一类是依赖OS,大概就是大家谈的,这类汇编语言其实与如早期单片机语言不相同了,是基于OS对硬件或机器指令"命令化"(准确说法如句柄\API什么的),再由高级汇编编译器去使用的;
2 并不是什么语言都行,应该是不同的汇编语言对硬件依赖很大的,如果HTML也算是语言的话,应该地球人就不好做汇编器了.
#16
理论上什么语言都行,事实上是C。
#17
不大认同。
1、汇编语言没这么分类的,所谓的操作系统依赖不过是调用OS的API。作为语言本身并不依赖这些API。
2、属于吹毛求疵,自然语言的歧义性到处都存在,根据上下文理解,应该没人会理解成用HTML语言写汇编器。
#18
编译器不过是一个翻译机,编译器自身的运行环境理论上无关紧要。
#19
汇编100% 是依赖机器的 每个CPU都有自己的一套汇编指令
#20
没想到有争论:
1 基于单片机的开发系统,使用的单片机语言也是汇编语言,不过并没有OS吧,你用什么API?如2051的定时器;
2 基于DOS的开发系统或其它有OS的系统,是不是有OS的呢?
我想这点应该是明了的吧!
1 基于单片机的开发系统,使用的单片机语言也是汇编语言,不过并没有OS吧,你用什么API?如2051的定时器;
2 基于DOS的开发系统或其它有OS的系统,是不是有OS的呢?
我想这点应该是明了的吧!
#21
看看语言发展的历史,可以看出汇编语言的位置.
机器代码(早期的译码机)-->代码集合(如早期运算器)-->离散微命令--->微指令--->机器级汇编-->.......
**********************
不大认同。
1、汇编语言没这么分类的,所谓的操作系统依赖不过是调用OS的API。(后面看不懂省了)
为什么没有这么分类的?呵呵那如何分呢?
机器代码(早期的译码机)-->代码集合(如早期运算器)-->离散微命令--->微指令--->机器级汇编-->.......
**********************
不大认同。
1、汇编语言没这么分类的,所谓的操作系统依赖不过是调用OS的API。(后面看不懂省了)
为什么没有这么分类的?呵呵那如何分呢?
#22
谁能给出个实例说说,带注释的。谢谢
#23
硬件相关是汇编的特殊性,
跟操作系统有什么关系,
你能跟据系统不同把c语言分成windows版和linux版?
你能把c分成依赖os和不依赖的?
#24
第一个编译器当然是用机器指令写,很简的道理
#25
只是一个工具而已,跟dos下的DIR命令比并没有什么特别,你想用什么语言写就用什么语言写,如果不怕麻烦,甚至可以用VB脚本来写,当然,那跑起来可能很慢。
#26
看来LZ是想写个编译器出来了,用自己最熟悉的语言就好,只要目的能达到就行.
#27
最最初的编译器应该只能是通过机器语言字节码构造出来的.但是现在基本上使用C/C++为多.
#28
汇编语言编译器其实用什么语言写都无所谓,但是现在的MS操作系统占了绝大多数,系统其本身就是由C语言所写的,所以汇编语言编译器用C来写个人认为与系统的兼容性可以达到最好的程度,新手之见,各位见笑了!
#29
这个不限,能输出二进制文件的语言都可以
你用解释型(Python,Ruby)的语言写一个都可以,
如IA-32,你知道它的所有指令集就OK了。。。。。
你用解释型(Python,Ruby)的语言写一个都可以,
如IA-32,你知道它的所有指令集就OK了。。。。。
#30
最初的汇编语言编译器, 一定是用机器语言编写的.
但是如果有了一个可以执行的程序, 那么用什么语言都可以了, 只需要写出一个在现有操作系统下能够执行的程序, 然后在程序中添加将汇编字符进行翻译到二进制的机器语言即可.
编程语言的编译原理太简单了, 一般高级语言初学者都可以编程出这样一个程序.
但是如果有了一个可以执行的程序, 那么用什么语言都可以了, 只需要写出一个在现有操作系统下能够执行的程序, 然后在程序中添加将汇编字符进行翻译到二进制的机器语言即可.
编程语言的编译原理太简单了, 一般高级语言初学者都可以编程出这样一个程序.
#31
第一个应该是机器语音
也就是0101这样写出来的
要知道当时艾尼克的程序还是人为的开关来控制呢...
不就是0101嘛 当然有人会去做这事咯
也就是0101这样写出来的
要知道当时艾尼克的程序还是人为的开关来控制呢...
不就是0101嘛 当然有人会去做这事咯
#32
mark
#33
类似鸡和蛋的问题:
比如c语言编译器:
第一个c语言编译器是用汇编写的(因为没有更高级的编译器),之后用c语言重写了c语言编译器(因为有了c语言编译器).
在linux下用源代码装Gcc要编译安装两次:第一次用系统已经存在的gcc编译一次,第二次用第一次编译生成的新的gcc再编译一次.
因为老的编译器编译出的代码质量与新的编译器可能不是很好.
比如c语言编译器:
第一个c语言编译器是用汇编写的(因为没有更高级的编译器),之后用c语言重写了c语言编译器(因为有了c语言编译器).
在linux下用源代码装Gcc要编译安装两次:第一次用系统已经存在的gcc编译一次,第二次用第一次编译生成的新的gcc再编译一次.
因为老的编译器编译出的代码质量与新的编译器可能不是很好.
#34
楼上说鸡生蛋,蛋生鸡的问题,确实挺像的。
但我理解,最底层的代码,还是用最接近机器的方式的
但我理解,最底层的代码,还是用最接近机器的方式的
#35
机器码
3键键盘
0,1,backspace
3键键盘
0,1,backspace