利用C和汇编语言混合编程实现DSP软件设计
天顺登录!正在编写需求与C代码维系的汇编代码时,汇编编程职员必需领会编译器的商定和假设。汇编编程职员还必需领会编译器的寄存器利用商定。平时,寄存器利用商定将硬件寄存器分成被挪用方保留(或挪用方利用)和被挪用方利用(或挪用方保留)寄存器。
图1:用C发言创修的轮回缓冲器代码(左)以及由CEVA-teakLite-III创修的等效汇编代码(右)。
题目是正在哪里划分C代码和汇编代码的范围。这取决于(profiler)所能供应的本能说明结果。然而正在利用之前,DSP工程师需求为利用序次界说明确的目的,这些目的凡是囊括轮回数、代码周围和数据量。目的一朝确定后,该领先完全用C发言编写和创修利用序次,然后才利用来说明本能。
正在某些特定情景下,重倘使限度利用中,C发言级的编码就足够了。但正在人人半情景下,初始编写的C发言利用序次是不行餍足一个或更多目的恳求的。这平时意味着多少需求少少汇编代码。正在求帮于汇编编程之前,剧烈创议保留原始的C代码。如此不光便当调试,并且当条款成熟(比方采用更庞大的平台),还可能返回到这些C发言的完成。
利用序次险些都是由C代码和汇编代码夹杂构成的。正在那些对本能起决计性效率的要害成效中,DSP工程师将不绝利用高度优化的汇编代码,同时转用C发言编写那些不太要害的成效,这将有利于代码庇护和移植。而C和汇编代码的这种维系恳求DSP工程师具备特意的器材和手段。
汇编一面代码应尽也许少。为此,工程师需求当真说明供应的本能结果,并确定利用序次中的要害函数。要害函数是指占用大一面施行岁月,而必需用汇编发言重写才力餍足本能目的的那些函数。重写个中的几个要害函数后,需求从头举办本能说明。即使仍达不到目的恳求,那就该当确定其它要害函数,再举办重写。图1显示了欺骗专用硬件机造得回高度优化的汇编代码。