如果我使用汇编语言为嵌入式系统编写代码。我可以使用实时操作系统和汇编语言吗?通常,在涉及复杂软件时使用rtos。是否有任何技术或理论上的限制?
发布于 2013-10-03 20:43:29
这实际上取决于操作系统。大多数已知的OSes允许使用汇编语言编程,但其中一些编程非常不舒服(例如Mac,它对API调用的堆栈对齐提出了非常奇怪的要求)。
我可以想象一些操作系统将使组装编程绝对不可能,但是这样的操作系统可能也会在某些特性上限制自己。
因此,规则是-如果操作系统允许运行编译后的二进制文件,那么它允许汇编语言编程。
这完全是另一种说法,即创建这样的程序是多么容易。良好的API文档是必不可少的。
发布于 2013-10-06 09:42:36
当然,答案是肯定的。如何做到这一点可能取决于所选的体系结构和特定的RTOS。
大多数RTOS内核都是作为静态链接库提供的,您可以将应用程序代码链接到其中,从而形成一个整体加载映像。一些像QNX这样的操作系统是在运行时动态加载和执行应用程序的完整操作系统。在后一种情况下,从汇编程序发出OS调用应该在OS文档中处理。在静态链接RTOS库的情况下,汇编程序接口通常将符合目标体系结构的ABI和调用约定,这将被记录在体系结构中,可能还有RTOS本身。
大多数RTOS产品都是使用code接口设计的,您的目标是从汇编程序调用C代码,然后应用这些文档。您可以在汇编程序或RTOS文档中找到这些信息。
尽管如此,使用汇编程序的理由通常是保持对代码大小和性能的严格控制,但是通过使用大型(Ish)第三方库,您可以在一定程度上放松这种控制,并且可以说,只要使用C或C++就可以了。
事实是,在大多数情况下,您需要对特定的指令集非常了解,以便在性能和代码大小方面都优于优化的C编译器,而且即使您有这种知识,从生产力的角度来看,手工优化大量的汇编程序也很少值得付出努力。在大型汇编代码库中,由于生产率的原因,使用大量的锅炉板和宏生成的代码是常见的--对于特定的使用来说,这往往是次优的,而编译器优化器可以在翻译过程中考虑代码的每个部分的实现。请参阅科林·沃尔斯( Colin )的“这篇文章 on embedded.com”(请阅读这些评论--包括我的评论--以求平衡,也只是为了让嵌入的极客们有分歧的乐趣)。
https://stackoverflow.com/questions/19166627
复制相似问题