汇编:8位芯片上的32位浮点指令

Assembly: 32 bit floating point instructions on an 8 bit chip

我试图帮助一位朋友在 8 位 AVR 芯片(Atmega8535)上编写一些汇编代码,但我的汇编知识非常少,而且主要集中在现代芯片上,而不是一些过时的化石。

所以它归结为如何在甚至不支持浮点特定指令集(如 FADD)的 8 位架构中添加 两个 32 位浮点数的问题...

; 3.1415926 (pi) is given by 0x40 0x49 0x0F 0xDA
; 2.7182818 (e)  is given by 0x40 0x2D 0xF8 0x54

感兴趣的 here 是相关芯片的数据表。指令集从第301页开始。

我认为你有以下选择:

  • 查看 avr-libc 了解实现细节
  • 用 c 编写程序。
    我敢打赌 avr-gcc 写的汇编代码(在效率 正确性方面)比你更好
  • 使用更简单的数字格式。例如:

下面这本书也是一个很好的基本理解来源:

"Software Manual for the Elementary Functions" 作者:威廉·科迪、威廉·韦特

它展示了如何仅使用基于整数的算法来实现各种(也是基本的)操作和算法。

So it boils down to the question of how to add two 32 bit floating points in an 8 bit architecture that doesn't even support floating point specific instruction sets such as FADD

avr-libc 库可以做到 like this。所以你也应该。