所以,这个问题可能看起来很奇怪,但是让我说我编译:
int main(void) { int x = 3; int y = 4; int z = x + y; }
有可能让CPU运行吗? 怎么样? 例如,这会让我写信给监视器吗? (如果我没记错的话,你可以在内存中写下要显示的内容。)
对于您的程序,除了启动它之外,它不依赖于任何操作系统服务。 如果它是另外做输入或输出,它几乎肯定依赖于操作系统来执行i / o。
如果您想用自己的代码替换操作系统,那么您可以这样做。 存在简约的操作系统和程序加载器。 但是,是的,你需要学习很多东西。
是的,有办法运行,没问题。 您可以使用pcemu或我分叉的pcemu_samples并制作基于x86的x86,如果您不关心处理器,我有许多模拟器以及嵌入式处理器/微控制器的示例更容易看到发生了什么。
printf是关于使用它的最糟糕的C库调用,它在很多方向,浮点,字符串,分区等等,以避免它为这种事情。 我看到你还没看过评论。
要查看正在运行的程序,您要在并行端口上使LED或引脚闪烁,或者将字符从串行端口发送出去,这比编程显卡中的寄存器和调试该代码要容易得多,无需查看是否正在制作进展。
现在使用x86,你有一个图层,不是真正的操作系统,而是一个背后有这种代码的图层,你可以简单地调用在文本模式下在屏幕上打印字符并查看程序运行。 我已经剥离了pcemu_samples,但是完整的pcemu和dosbox以及其他x86仿真环境以及实际的计算机都可以使用这些东西。 其中一个sim环境(dosbox,pcemu,etC)是一个更好的起点(如果你觉得你必须从x86开始,注意这里的主题,我实际上是不鼓励从x86开始)。 如果你做了x86,你可以从dosbox或类似的东西,然后以你的方式工作可能是一个可引导的USB棒,并从那里开始工作。
嵌入式处理器,其中有很多很多的评估板,价格低于50美元,有些是20美元或者低于20美元的好处。 但是许多免费的模拟器可供您学习。 我有一些你可以尝试,thumbulator,amber_samples,pcemu_samples可能是最稳定的(不太可能调试我的东西,主要调试你的东西),然后其他不太稳定,meecoate,msp430sim等等。$ 5将获得你是msp430主板,10美元将为你获得一个ARM cortex-m3主板,20美元会让你太强大而不能称为微控制器,微控制器主板(基于cortex-m4)。 更多的钱并没有让你更快或更好,但更多的选择。 可以运行Linux的主板可以/会让你想要学习的东西更加痛苦,保持在这个水平之下。
您的简单示例需要很少,在编译器为该函数创建的代码之外,您只需要一条指令就可以从复位向量分支到主函数的入口点。 理想情况下,您希望设置堆栈,最终可能为零.bss或copy .data等。只是学习使用工具(编译器,汇编器,链接器)构建嵌入式二进制文件(即使您没有运行的硬件/模拟器) )会告诉你(反汇编)如何连接reset和main之间的点(你不必称之为main,你可以将它命名为你想要的任何东西,一些编译器你不想把它称为主要的,它们会抛出额外的垃圾进入你的二进制)。
这只是一个很长的故事,你需要熟悉汇编,你必须知道什么刮刮板适合你的CPU类型,x86系列的assembly非常有名,你可以通过学习它。
你会看到类似的东西:
Start: mov AX ,0xff ;example 1 mov BX ,[CX] ;example 2 myString db 'Hi This is my First scratch',0 ;Print Example call printFunc ;example 3 jmp $ printFunc: mov ah, 0Eh ;This how you print on screen in Assembly loop lodsb cmp AX,BX je loop
等等…….
需要了解更多c/c++开发分享如何制作可启动程序?,也可以关注C/ C++技术分享栏目—计算机技术网(www.ctvol.com)!
以上就是c/c++开发分享如何制作可启动程序?相关内容,想了解更多C/C++开发(异常处理)及C/C++游戏开发关注计算机技术网(www.ctvol.com)!)。
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/c-cdevelopment/979638.html