我不是疯了,只是在重复造轮子 :D
我写了引导程序、鼠标和键盘迷你驱动程序、小型操作系统等等。
我一直试图避免DOS中断,只使用BIOS中断,试图进一步发展统一的小型操作系统,但突然间我决定编写自己的BIOS :)
传说如此:
我曾经是高级程序员,然后成为低级程序员。总有一天我会成为机器语言程序员!
BIOS是用汇编语言编写的吗?我该如何刷写它?机制是什么?我能开始编辑我的当前BIOS吗?
我不是疯了,只是在重复造轮子 :D
我写了引导程序、鼠标和键盘迷你驱动程序、小型操作系统等等。
我一直试图避免DOS中断,只使用BIOS中断,试图进一步发展统一的小型操作系统,但突然间我决定编写自己的BIOS :)
传说如此:
我曾经是高级程序员,然后成为低级程序员。总有一天我会成为机器语言程序员!
BIOS是用汇编语言编写的吗?我该如何刷写它?机制是什么?我能开始编辑我的当前BIOS吗?
如果你想使用x86 BIOS,最好的方法是编写、替换或修改虚拟机(如qemu、virtualbox或其他)的BIOS。将其替换为你的BIOS可能是在某个目录中替换文件或使用命令行选项指定备用BIOS。一旦你在这方面有很好的经验,如果仍然有一些带有传统BIOS的主板,也许你可以试着破解编程(需要购买每种类型的主板若干,因为你肯定会把其中一些变成砖头)。由于有很多嵌入式系统可以以20到200美元的价格获得,并且可以获得相同水平的经验,所以在没有良好的原理图和文档的情况下,对PC主板进行修改并不是一个明智的选择。你可以找到一台具备原理图和BIOS清单记录的原始PC,而且BIOS是可插拔的,如果你的BIOS无法启动(并且没有损坏主板),它就不是个砖头,你可以重新编程或更换BIOS芯片。建议使用微控制器作为虚假BIOS,因为找到正确的硬件来重新编程更多BIOS芯片可能比找到工作的原始PC更难……有一个Amiga社区,他们可能更喜欢你改进/调整他们的BIOS,比如在传统系统调用后面放置现代硬件。
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
FWIW Modbin是一个DOS程序,正如其名称所示,它修改BIN映像,特别是为了对现有BIOS代码进行简单和相当极端的更改。
如果您可以获得旧的主板(许多仍在工作中被扔掉),我会鼓励您玩弄BIOS。 如果有兴趣的话,这很有启发性和有趣,而您似乎是:) 曾经有一段时间,我从具有相同或类似芯片组但由不同制造商制造的主板上下载BIOS映像...有时候会带来相当大的好处,包括继续获得BIOS更新,即使原始主板制造商放弃或破产了,但也包括功能和性能导向的选项和更改。
这导致了“HOT Flashing”,即将插座式BIOS芯片拉起,以便引脚刚好接触,并一旦启动,就将其拉起并替换为坏的芯片(通常是我自己搞砸的芯片),同时仍在运行和闪存它,利用缓存的BIOS功能保持系统活动。 对于我们这些极客来说,这是有趣的事情,并给了我编写OS / 2设备驱动程序的信心。
除了让电脑运行之外,还有其他的方法来刷新bios,但这需要一些硬件。不过成本应该不会很高。
你可以尝试类似于这种技术:http://hackaday.com/2010/11/18/build-your-own-soic-progamming-clip/
它解释得更加详细,虽然你可能不是在寻找感染问题,但其中覆盖了一些获取bios的技术,编程剪辑就是其中之一。