我已经编程了好几年了,但有一件事我从来没有完全理解过:
有两种类型的编程语言。编译的和解释的,而编译的首先需要编译成解释语言,然后才能执行。
例如,C/C++ 需要先编译成机器语言,然后才能执行。
我的问题来了:谁真正运行编译的 C/C++ Windows/Linux 程序?它是由 CPU 直接解释,还是 OS Kernel 执行它并将命令传递给 CPU?
如果 CPU 直接执行它,Windows Kernel 怎么会拒绝一些调用呢?否则,这是否意味着内核也理解机器语言,或者非内核 C/C++ 程序不能编译为机器语言?