47

我不是疯了,只是重新发明轮子:D
我写了引导加载程序、鼠标和键盘迷你驱动程序、迷你操作系统等等。

我一直在尝试避免 DOS 中断,只使用 BIOS 中断,试图推进统一的迷你操作系统,但突然我决定编写自己的 BIOS :)

传说中说:
我是高级程序员,然后是低级程序员。有一天我会成为机器语言程序员!

BIOS 是用汇编语言编写的吗?怎么刷?机制是什么?我可以开始编辑我当前的 BIOS 吗?

4

5 回答 5

30

BIOS 可以用汇编语言编写,但并非必须如此,某些部分需要获取系统调用的参数,因为它们与编译器调用约定不匹配。

你怎么刷它?因主板而异,我会从一个开源虚拟机开始,然后为此编写一个 bios。或者在您编写了 bios 的地方创建一个虚拟机。该机制因供应商而异,通常您启动 dos(dos 并没有死,它在 PC 世界中非常活跃,尤其是主板开发和嵌入式系统)。我不会乱搞一块真正的主板,如果你还不知道所有这些问题的答案,那么如果你走这条路,你会弄坏许多主板。

您可以尝试为您的主板进行 bios 升级并对其进行逆向工程(尽管可能有一个点击协议表明您不会这样做)。如果你弄清楚了,你既可以加载它,也可以破解它。我不会去那里,在你弄清楚之前你会砖你的系统。

写简历真的是你所追求的吗?相当老派,就像为了好玩而编写 6502 代码一样。有许多更有用和更有趣的低级问题。

如果您可以编写 asm,则编写机器代码一点也不难,您可以只是为了好玩而去做。x86 很糟糕,您应该花一些时间学习其他系统及其 asm 和机器代码(并为它们编写操作系统)。ARM一统天下,不依赖bios。有人告诉我,要在非 x86 系统上安装显卡,您仍然需要在 x86 BIOS 上的 x86 中进行一些操作,才能弄清楚如何在无需运行 x86 BIOS 的情况下调出主流显卡。观看模拟器运行 bios 并查看它的作用,找出它在没有 bios 的情况下替换 init 上的电源...编写指令集模拟器或反汇编程序是编写机器代码之外的下一步,我什至不会浪费在 x86 上的第二次,

如果 x86 BIOS 是您想要的方式,那么最好的方法是为 qemu、virtualbox 或其他虚拟机编写、替换或修改 BIOS。用您的BIOS替换该BIOS可能会替换某个目录中的文件或使用命令行选项来指定备用BIOS。一旦您在这方面经验丰富,那么如果仍然有带有旧版 bioses 的主板,也许您可​​以破解自己的编程方式(需要购买几个每种类型的主板,因为您会砖一些)。有如此多的嵌入式系统可以以 20 到 200 美元的价格获得相同水平的经验,如果没有像样的原理图和文档,在 pc 主板上破解是没有意义的。您可以挖掘一台原始 PC,其中记录了原理图和 bios 列表,并且插入了BIOS,因此如果您的BIOS无法启动(并且不会破坏主板),则它不是一块砖,您可以重新编程或更换BIOS芯片。可能想使用微控制器来代替假的 bios,因为找到合适的硬件来重新编程更多的 bios 芯片可能更难找到可以工作的原始 PC ......有一个 amiga 社区可能会更有趣,并且会很高兴您改进/调整他们的 BIOS,比如将现代硬件置于遗留系统调用之后。

于 2012-06-05T03:32:27.440 回答
2

如果您想为兼容 IBM PC 的计算机编写 BIOS(这是当今大多数台式 PC,尽管 CPU 指令集有更多扩展,以及一些不同的 BUS 接口),那么我建议您查看IBM PCIBM PC XTIBM PC AT 技术参考手册。特别是 IBM PC AT 手册,因为那是事实上的标准。

这些手册有一个 IBM 在他们的计算机上使用的完整 BIOS 的程序列表,并且它们是汇编语言的。您可能需要稍微搜索一下这些手册(尤其是 IBM PC AT 手册)才能找到它们,因为有些没有直接列在目录中,但它们就在那里。希望这些 BIOS 可以帮助您入门。

于 2018-03-27T18:17:01.560 回答
2

BIOS 可以用任何您喜欢的语言编写,尽管较低级别的语言给您更多的控制权。汇编代码和机器代码几乎相同,区别在于微代码接口和您键入的内容,例如。对于机器代码,您只需输入 2 个字符,程序集会为您提供字母数字。当我需要计算机每隔几个小时启动一次并且没有找到任何可以做到这一点的 BIOS 时,我开始寻找自定义 BIOS。

要刷新 BIOS,请遵循制造商指南。BIOS 现在已替换为 UEFI(以增加安全性)。结帐:https ://www.pcworld.com/article/187437/how-to-update-your-bios.html

x86 和 amd64 指令参考:https
://www.felixcloutier.com/x86/ 带有扩展名的 x86 指令:https
://en.wikipedia.org/wiki/X86_instruction_listings i386 指令参考:https://css.csail.mit。 edu/6.858/2014/readings/i386.pdf
x86 组装指南:https
://www.cs.virginia.edu/~evans/cs216/guides/x86.html 英特尔指令集参考:https://software.intel。 com/sites/default/files/managed/a4/60/325383-sdm-vol-2abcd.pdf

于 2019-04-30T18:30:11.437 回答
1

FWIW Modbin 是一个 DOS 程序,顾名思义,它可以修改 BIN 映像,特别是为了对现有 BIOS 代码进行简单的相当极端的更改。

如果你能得到一个旧主板(很多都被扔掉了),我会鼓励你玩转 BIOS。它的信息丰富且有趣,如果有人如此倾向于并且您似乎是 :) 曾经有一段时间我从主板上下载了 BIOS 映像,这些主板具有相同或相似的芯片组,但由不同的制造商制造……有时具有相当大的优势,包括诸如在原始主板制造商丢球或倒下后继续获取 BIOS 更新等简单的问题,以及面向功能和性能的选项和更改。

这导致了“HOT Flashing”,它正在拉起一个带插座的 BIOS 芯片,以便引脚几乎没有接触,一旦启动,拉动那个并替换一个坏的(通常是我用 fuxored 的),同时仍在运行和闪烁它使用使系统保持活动状态的缓存 BIOS 功能。为我们这些极客说服的人提供有趣的东西,让我有信心为 OS/2 编写设备驱动程序

于 2015-10-21T00:20:15.370 回答
0

除了让电脑运行之外,还有其他方法可以刷新 BIOS。但它需要一些硬件。不过应该不会很贵。

你可以尝试这种技术:http: //hackaday.com/2010/11/18/build-your-own-soic-progamming-clip/

我今天看到的这个演讲: https ://conference.hitb.org/hitbsecconf2015ams/sessions/how-many-million-bioses-would-you-like-to-infect/

它更详细地解释了它,尽管您可能不是在寻找感染,但涵盖了一些获取 bios 的技术,其中编程剪辑就是其中之一。

于 2015-05-29T00:22:55.700 回答