gpt4 book ai didi

assembly - 操作系统 不同架构的汇编语言

转载 作者:行者123 更新时间:2023-12-02 04:56:15 25 4
gpt4 key购买 nike

我是这个主题的新手,请原谅我的无知?

我刚开始在我的 Linux 系统上学习 x86 处理器的汇编。我写了一个简单的引导加载程序,它可以工作但特定于 x86。我也知道寄存器等对于英特尔和 AMD 或 32 位和 64 位非常不同。那么一个操作系统或应用程序是如何同时为各种架构编写的。是的,应用程序是特定于操作系统的,但它们也不应该是特定于 CPU 的。就像当它们被编译成机器代码时,它们需要为一种类型的处理器制作(因为寄存器等因不同的体系结构而不同)?那么他们是怎么做到的呢?

或者是否所有的 x86 都有通用的寄存器和指令集,如 athlon、pentium、i3、i5 等,只有 x86 和 64 位架构不同吗?

最佳答案

你最后说的是正确的——所有的 x86 都有一套通用的指令,尽管它在幕后所做的事情的细节显然非常不同。例如,在 Intel 硬件上,您实际上有 x86 汇编指令实际上无法访问的隐藏寄存器。

用汇编语言编写的操作系统部分需要针对不同架构的不同汇编指令(x86 vs PPC vs ARM 等...)

用 c 编写的操作系统部分也可能有一些差异,例如,当移动到 x64 时,您不能再假设指针是 4 个字节。为了在 C 级别处理这些差异,代码通常会使用大量 #ifdef 来处理差异。

这当然是一个很大的话题,以上只是一个非常笼统的概述。

关于assembly - 操作系统 不同架构的汇编语言,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21979720/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com