Binary 用二进制代码编写整个操作系统有什么好处吗?
用二进制代码编写整个操作系统有什么好处吗 我问这个问题的原因是因为我想知道,完全用二进制代码编写操作系统是否会带来任何性能上的好处,如果你说不,你是否绝对肯定不会Binary 用二进制代码编写整个操作系统有什么好处吗?,binary,Binary,用二进制代码编写整个操作系统有什么好处吗 我问这个问题的原因是因为我想知道,完全用二进制代码编写操作系统是否会带来任何性能上的好处,如果你说不,你是否绝对肯定不会 我的另一个问题是,答案1你说没有人用二进制写,这是我想问的另一个问题,有没有办法知道如果没有人用二进制写,用二进制写是否真的没有好处?你可以用汇编语言写操作系统……我想你也可以用“二进制代码”写。如果你做得对,使用汇编语言可以比使用C语言获得性能优势——如果你不是一个好的汇编代码编写者,你也可以做相反的事情,使其效率大大降低。无论如何
我的另一个问题是,答案1你说没有人用二进制写,这是我想问的另一个问题,有没有办法知道如果没有人用二进制写,用二进制写是否真的没有好处?你可以用汇编语言写操作系统……我想你也可以用“二进制代码”写。如果你做得对,使用汇编语言可以比使用C语言获得性能优势——如果你不是一个好的汇编代码编写者,你也可以做相反的事情,使其效率大大降低。无论如何,完全在汇编中编写操作系统将是相当困难的(虽然并非不可能,但以前已经完成过)
然而,用“二进制”编写并没有什么好处,因为程序集直接翻译成机器代码。没有人用二进制编写。人们使用的最低级别语言是汇编代码。如果您对学习计算机如何使用二进制感兴趣,可以查看编译器如何将程序集转换为二进制,以及C编译器如何将代码转换为程序集和二进制
我想说的是,虽然有人可能会想出一个反例,但对二进制编码没有任何学习益处,或者说根本没有任何益处。我碰巧有一个保存的reddit线程,它提出了一个与你类似的问题。它可以与相关的回答一起找到。我把它贴在下面。一些信息被遗漏了,因为我不能发布两个以上的链接,所以如果你愿意,你可以继续原始评论并找到它们。谢谢 监视器 首先,你需要一个最小的“监视器”——它可以让你在输入设备上输入一些二进制代码并跳转到它。下面是一个C版本,允许您以八进制输入代码:
typedef void (*function)();
char program[32];
int main() {
char *t = program;
unsigned i, n;
for (;;) {
for (i = 3; i; i--) {
n = getch() - '0';
if (n > 7) (*(function)program)();
*t = *t * 8 + n;
}
t++;
}
}
通过对getch()
的BIOS调用,将其转换为8086机器代码,将其放在软盘的引导扇区上,您就成功了。GCC将其编译成12条指令,以及main()
的函数序言。我认为在16位模式下是32字节。(可能BIOS调用会将其推送几个字节。)(我不记得BIOS中是否有允许您键入任意字节的alt键盘。如果是这样,您可能可以通过删除循环来简化上面的最小监视器程序。)
传统上,像这样的监视器首先内置在硬件中,稍后作为软件安装在ROM中。如果您想在很短的时间内使用它,它至少还需要一些功能:
- 纠正键盘错误的能力李>
- 能够查看您正在键入的内容(或者BIOS是否调用
?)李>getche
- 显示内存内容的能力李>
- 更改将新字节放入内存的地址的能力李>
- 在某个中断向量上安装自己的能力,以便在程序遇到无限循环时可以返回到它们李>