【问题标题】:Why do we write some part of os in assembly and some part in high level language like c? [closed]为什么我们用汇编语言编写os的一部分,而用c这样的高级语言编写一部分? [关闭]
【发布时间】:2013-04-19 17:30:15
【问题描述】:

在实现操作系统时,除了极少部分是用汇编编写的,而大部分是用 C/c++ 等高级语言编写的 什么部分是用汇编写的,为什么要写,为什么大部分代码都是用高级语言写的

【问题讨论】:

  • 这个问题太啰嗦了。问题应该是关于具有特定答案的特定编程问题。这里的任何答案都可能是意见。
  • 简答:用 C/C++ 编写可能更容易,但并非所有东西都可以用 C/C++ 编写。
  • 好问题,没有理由反对。不幸的是,Stack Overflow 不适合解决如此广泛的问题。
  • 因为没有人创造出可以直接解释/执行C代码的硬件。
  • 基本上,与 CPU 寄存器和 I/O 接口中的寄存器“对话”有关的某些事情,您无法从 C 之类的标准语言中完成。有一些特殊的PL/S 之类的专用语言以及允许使用内联汇编或寄存器规范的 C 的某些变体,但标准 C(或其他)根本无法执行诸如旋转任务寄存器位之类的事情。

标签: c++ c assembly operating-system


【解决方案1】:

首先,我不确定 C 是否符合高级语言的要求(恕我直言,它是一种低级语言;Haskell、Ocaml ......比 C 高级)。 p>

那么,并非操作系统内核中的所有内容都可以用便携式 C 实现。硬件相关的东西(中断处理、调度、分页、访问硬件 I/O 端口……)通常需要一些汇编代码。

(您也许可以在 C 中嵌入带有 asm 关键字的代码,但这不算是可移植的 C)。

【讨论】:

  • C : 汇编语言的所有力量,具有...汇编语言的灵活性。
  • 否;不是汇编的全部力量:例如,longjmp 在可移植的 C 中是不可实现的,它需要一些汇编
  • 这是一个 很久 以前(显然是很久以前)的 comp.rec.humor 笑话。
  • C 只是高级汇编语言 :-)
  • 我经常这样做。为什么应该是错的?我可以评估一个问题超出了 SO 的主题,但仍然回答它!
猜你喜欢
  • 2015-04-26
  • 2017-11-28
  • 1970-01-01
  • 2013-08-13
  • 1970-01-01
  • 2012-04-06
  • 1970-01-01
  • 1970-01-01
  • 2012-09-14
相关资源
最近更新 更多