c - SDCC 可以覆盖运营商吗?
问题描述
我一直在尝试使用 SDCC 编译极其轻量级的 C 程序以在 TI83 计算器上运行(是的,你可以这样做)。作为一个旧计算器,它没有太多的 RAM 来存储程序,而且处理器非常慢。我编写的代码类似于*((char*)(x/8)) |= 0x80>>(x&7)
一个简单的例程来打开 x 是有符号字符的单个位。问题是,SDCC 实现了将所有内容向上转换为 16 位整数的 C 标准,这增加了一层复杂性,然后它错过了 x/8 可以通过位移来实现的事实,并实现了整个内联除法算法。
我的问题是:我可以重新定义算术运算符以避免在可能的情况下向上转换吗?也许其次,我可以定义一次除法操作,然后多次调用它以避免大量文件吗?
编辑: 我意识到我的代码引起的很多问题都存在于相关变量的类型中,因为只有无符号除法才能进行这种优化。重新定义操作员并将操作转移到单独的单一位置的问题仍然存在。
解决方案
推荐阅读
- wordpress - 使用 htaccess 重定向博客文章 url
- scala - Scala:地图+过滤器而不是 foldLeft
- exception-handling - Apache Camel MQTT - 消息代理关闭时不会引发异常
- php - 多个微型站点将作为一个登录
- c# - 表单执行串口命令,5秒后退出
- go - 以编程方式使用 Go-IPFS
- docker - ipv4 https 请求未转发到 docker 容器
- java - 如何通过 CronJob 从 Hybris 导出目录并通过分页导出到外部系统?
- angular - 带有 div 切换播放暂停的 ngx-youtube-player 角度组件
- php - PHP MySQL选择$id在字符串中的位置