by eric_admin » Sun Nov 09, 2008 8:00 am
The current version of the ImageCraft compiler operates using what is referred to as the "LMM" (Large Memory Model) architecture. Normally, a COG running assembly language is limited to executing no more than 2K of code, since that's the amount of assembly which will fit in a COG's RAM. The LMM gets around this limitation by fetching instructions from main RAM, placing them into COG RAM, and then executing them there. The advantage of LMM is that it significantly increases the maximum code size, but the disadvantage is that it executes slowly (compared to raw assembly, but still faster than spin) due to the overhead of fetching instructions.
In it's present incarnation I don't see the ImageCraft compiler as a viable path to authoring Coyote-1 effects because 1) Using LMM is too slow to process audio and 2) LMM breaks the Coyote-1 effect module storage/retrieval paradigm (The O/S expects to manage effects as 2K code blocks which can be stored in EEPROM, retrieved at runtime, loaded into a COG, and executed there).
I talked to one of the ImageCraft guys at the Embedded Systems Conference back in April and at that time there was not an operational mode which would allow you to compile C into non-LMM stand-alone assembly in a clean way. I've kept an occasional eye on their site to see if they would ever move to support of non-LMM C, but it's quite possible that I misunderstand what the current version of their compiler is capable of. I had a lot on my plate back when I first found out about them, and LMM seemed like a show stopper, so I haven't given them much attention. I'll give their demo a try and see what's possible with the current release.