首页 > 解决方案 > SDCC 可以覆盖运营商吗?

问题描述

我一直在尝试使用 SDCC 编译极其轻量级的 C 程序以在 TI83 计算器上运行(是的,你可以这样做)。作为一个旧计算器,它没有太多的 RAM 来存储程序,而且处理器非常慢。我编写的代码类似于*((char*)(x/8)) |= 0x80>>(x&7)一个简单的例程来打开 x 是有符号字符的单个位。问题是,SDCC 实现了将所有内容向上转换为 16 位整数的 C 标准,这增加了一层复杂性,然后它错过了 x/8 可以通过位移来实现的事实,并实现了整个内联除法算法。

我的问题是:我可以重新定义算术运算符以避免在可能的情况下向上转换吗?也许其次,我可以定义一次除法操作,然后多次调用它以避免大量文件吗?

编辑: 我意识到我的代码引起的很多问题都存在于相关变量的类型中,因为只有无符号除法才能进行这种优化。重新定义操作员并将操作转移到单独的单一位置的问题仍然存在。

标签: cassemblyz80sdcc

解决方案


推荐阅读