我在一个拥有几个字节空闲RAM的专有音序器上工作;静态分配几百个字节; 8个寄存器,包括PC;没有间接(在C中,一个“指针”);没有堆栈。
没有MOV
指令:要将M
移动到K
,您必须编写CLX A; ORX M; STX K
,这会使依赖项解析复杂化,或者至少会进行优化。许多操作仅适用于特定寄存器:例如,32位右移使用高位字中的K
和低位字中的M
。
所以对我而言,嵌入式应用程序的C选择显而易见,因为没有指针或函数调用是可能的。大多数高级编程语言都有算术表达式,因此这无助于缩小我们的选择范围。
最重要的是绝对最小代码大小,因此优化是关键。
我倾向于将Lisp表达式编译为宏汇编程序的一种形式,因为程序员可以优化自己的高级操作,例如,编写XOR
指令。
我确信这不是第一个有这些限制的项目;过去如何解决这个问题?