编译二进制

时间:2016-08-19 11:09:21

标签: compilation compiler-construction binary

我想了解计算机最初是如何工作的。我最初知道ENIAC这样的计算机,他们实际上必须以正确的顺序插入电线才能使程序执行。他们后来使用了打卡,最后提出了汇编语言。它只是用FORTRAN,COBOL等从那里向上构建。有没有办法在我的计算机上编译0和1。如果我打开textedit,并键入一个特定的0和1序列,那么我该如何制作一个二进制文件而不是一个带有ASCII字符序列的文本?我对任何方法持开放态度。 (免责声明:我知道用二进制做事情需要永远,我只想学习如何做非常基本的事情。)

2 个答案:

答案 0 :(得分:3)

最简单的方法是,如果您愿意,可以在IDE中使用您选择的汇编程序。使用某种调试器(例如IDE),这样您就可以看到代码的效果,而无需写入控制台或文件。

不是仅将二进制文本写为文本数字,而是使用数据元素而不是指令编写完整的汇编程序源。

所以,而不是

.code
main proc
    mov eax,5               
    add eax,6               
main endp
end main
你可以写:

main proc
    db 10111000b, 00000101b, 00000000b, 00000000b, 00000000b
    db 10000011b, 11000000b, 00000110b
main endp
end main

db表示定义字节,b后缀表示二进制。

而且,有了这个,你就会被设置为作弊,但我不会告诉你如何问你所以我不会为你破坏这些乐趣。

对于使用MASM和Visual Studio 2015开始使用Windows,这是一个很好的tutorial

答案 1 :(得分:1)

创建二进制数据流的方式在很大程度上取决于其目的。

二进制数据本身并不是很神奇。您可以使用任何十六进制编辑器并开始键入所需的二进制输入。

但现在这不是计算机编程的方式。如果您真的想要进入最低级别,可以查看汇编编程,这基本上允许您以更方便的方式告诉您的机器应该执行的确切指令。

但即使在这里你也没有多少乐趣。如果您希望能够实际执行您的程序并在显示器上看到某些结果,甚至可能在键盘输入中看到某些结果,那么代码将变得非常庞大且难以为人类编写和理解。

这就是我们使用编译器的原因。编译器从高级语言生成此类代码,无需一遍又一遍地编写最小的指令块。

如果您真的只想了解计算机原理如何工作,请为简单的CPU下载一些仿真器(可能有一个很好的GUI)  和它一起玩吧。 Edumips是用于教育目的的模拟器之一。