【发布时间】:2012-08-12 12:25:37
【问题描述】:
我是一名中级(抽象)程序员,几个月前我开始考虑是否应该减少或增加抽象(我选择减少)。
现在,我认为我已经完成了大部分关于我需要什么的“研究”,但仍有一些问题。
现在我“实际上什么都不做”,我只是加强我的 C 技能(买了“K&R C Programing Lang”),我想(在感觉舒服之后)开始学习操作系统(如 minix)只是为了学习目的,但我有一个想法卡在我的脑海里,我真的不知道我是否应该在意。
理论上(我认为,不确定),高级语言不能直接引用硬件(如寄存器、内存位置等),因此基础的“完美语言”将是汇编。
我已经研究过汇编(前段时间)只是为了看看它是怎么回事(由于本书使用过时的调试器(Assembly Language Step By Step,适用于 Linux!),我停在了书的中间)但是根据我的阅读,我不太喜欢这种语言。
所以问题很简单:操作系统(引导加载程序/内核)是否可以在不涉及一行汇编的情况下进行编程,并且仍然有效?
即使可以,也不会是“跨架构”吧? (i386/arm/mips 等...)
感谢您的支持
【问题讨论】:
-
仅使用 C,如何在 x86 上首先更改 Real Mode?打个BIOS interrupt 电话怎么样?
-
我不知道。我在阅读 Jeff Duntemann 的书时已经研究过记忆模型,但我真的不知道如何应用它们。
-
这样的操作超出了C语言规范/stdlib的范围。尔格..
-
这样说 - 处理器总是通过在某些硬件定义的模式下从某个硬件定义的地址获取它的第一条指令来启动。数据/堆栈段寄存器、堆栈指针等可能指向非法/不存在的内存,需要使用有效值进行初始化。没有外围芯片在工作——没有内存管理,没有中断,没有定时器,只有引导代码。实际上,它将是汇编程序。
-
@MartinJames 感谢您的回答。事实上,这种方式很有意义;)
标签: c assembly operating-system cpu-architecture