来自http://www.altdevblogaday.com/2011/08/06/demise-low-level-programmer/
“当我开始编写我们现在认为理所当然的许多元素时,并不存在。当时的免费编译器没有DirectX,兼容的库也不多。因此,我不得不为大多数基本程序、键盘处理程序、鼠标处理程序、视频内存访问器、栅格器、纹理映射器、闪存器…编写自己的代码,当时我编写的程序都是我自己的代码,我必须能够处理任何事情。”
我正在寻找关于如何学习更多关于低水平编程的建议。例如,编写键盘/鼠标驱动程序、vga驱动程序或基本函数(如malloc )。
解决这个问题的最好方法是什么?我是一个本科的CS学生,有关于计算机架构/组装的课程,我们用VHDL语言在DE0-NaneFPGA上编写了一个简单的流水线处理器。我有很好的C编程知识。
在我看来,在现代的x86电脑上很难学到这些东西。微控制器更好吗(比如arduino板)?或者FPGA (但我的DE0-nano似乎有限)?或者买一台像64准将这样的旧电脑来学习,就像当年的人们一样?
在这个问题上有什么资源像书一样吗?
发布于 2013-10-12 14:14:42
我会推荐一种微控制器的方法,msp430,avr,或许多手臂之一。你可以用大约10-20美元从ti得到一个msp430或者一个手臂发射器,你也可以用10-20美元找到基于stm32的发现板,stm32f0 (Corcore-M0)很简单,很基本。stm32f4装载了诸如缓存和fpu之类的东西,但仍然是一个微控制器。
我认为微控制器方法会让你回到根源,非常基本的东西,硬件通常没有视频或硬盘驱动器什么的,但你确实学会了如何掌握工具(编译器,链接器等),以及如何阅读手册等。
您可以快速地转到linux支持的硬件,如raspberry pi或beaglebone。在所有级别上,尤其是linux能力级别上,除了视频芯片、usb芯片等手册之外,您还需要使用linux源代码来学习。要理解linux驱动程序通常是非常通用的,并且经常包含代码来从一个供应商驱动整个家族或整个硬件历史,所以一堆代码可能与手册中的任何内容不匹配,但有些代码会,这就是您理解手册所述内容的过程。并不意味着您必须重写linux才能使用这些信息。
一步一步地开始,从零开始的pcie和视频是一项主要的任务,如果你从那里开始,你很可能会失败,除非你已经有了知识和经验(如果你已经知道了,你不会在这里要求)。
您也可以采用bochs或类似于旧的8086 DOS系统的方法,如果您可以找到一些好的、旧的、基于dos/8086的手册,您可以访问regisiters、cga模式、vga模式等。
有大量的arm、avr、msp430、mips等(以及x86 )指令集模拟器,可以避免硬件的成本,也可以避免损坏硬件和不得不购买更多的成本(即使有大量的经验),甚至更好地编写自己的指令集simulator...vba一些nds模拟器,工作到qemu。
https://stackoverflow.com/questions/19333954
复制相似问题