有没有一个编译器能直接把汇编源码编译成二进制的程序,可以让cpu直接运行而不是编译成pe或是elf格式。其实就是把汇编源码翻译成对应的01机器码,这样的编译自己可以实现么,应为汇编不用什么语法,语义的解析直接把源码翻译成机器码就可以了,这样实现难么?不知道有没有这方面的开源项目可以参考。
------解决方案--------------------
你的意思是不用操作系统?再怎么简陋的可执行程序也得有一定的规范,在一定的系统下运行吧!自己的想法,具体我也不知道!
------解决方案--------------------
直接编译成二进制文件?JWASM(兼容MASM)、NASM、YASM(以NASM为基础开发的)等等开源的汇编编译器都可以
------解决方案--------------------
这个,最简单的是找下 debug 程序的源代码吧,它有基本的汇编功能,必然有相应的实现代码。
------解决方案--------------------
信息=数据+上下文
你光有数据了,没有上下文,一样不能把想要的信息表达出来,所谓的PE和ELF就是一种上下文,就算你自己定义01数据,也要有上下文呀,只是不同于PE和ELF罢了。
综上所述,楼主所说的是个伪命题!
------解决方案--------------------
汇编语言有这个功能
1)你编译成.com 不调用Dos 任何系统调用。
然后把你的程序写道磁盘引导区。
直接从磁盘启动就可以执行你的程序了。
代码需要绝对定位,具体内存地址不太记得了。
2)BIOS等代码,不需要操作系统支持就可以运行了,MASM,TASM都可以汇编成这种代码,你直接烧写在BIOS芯片上运行,开机启动代码就是这么执行的。
3)早期的 BASIC 系统,不需要操作系统支持,只是一个中断就可以跳入BASIC系统。
具体玩法,估计没有多少人知道。
------解决方案--------------------
.o文件就是没有处理过的二进制代码吧?
------解决方案--------------------
这个,你还是看他们源代码吧
http://www.japheth.de/JWasm.html,这是JWASM官网,最下面有JWASM的源码下载,这个是C写的,相对NASM要容易一些
http://www.nasm.us/pub/nasm/releasebuilds/,这里可以下载NASM的源码,这个也是C写的
http://flatassembler.net/index.php这是FASM的官网,听说FASM是自编译的……所以源码应该是汇编写的
------解决方案--------------------
你的意思是不用操作系统?再怎么简陋的可执行程序也得有一定的规范,在一定的系统下运行吧!自己的想法,具体我也不知道!
汇编语言 应该是可以在裸机下直接应用的,我刚看的书上写的,,
------解决方案--------------------
裸机下直接应用的,是机器语言吧;汇编语言是机器语言符号化了的,甚至现在的汇编语言引入了不少的高级语言里的概念了。
------解决方案--------------------
操作系统引导程序是比较好的裸机程序范例,很多汇编器都能写,比如nasm