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

Assembly 汇编:8位芯片上的32位浮点指令,assembly,floating-point,avr,atmega,Assembly,Floating Point,Avr,Atmega,我曾试图帮助一位朋友在8位AVR芯片(Atmega8535)上编写一些汇编代码,但我的汇编知识非常贫乏,主要集中在现代芯片上,而不是一些过时的化石 因此,它归结为如何在8位体系结构中添加两个32位浮点的问题,该体系结构甚至不支持特定于浮点的指令集,如FADD ; 3.1415926 (pi) is given by 0x40 0x49 0x0F 0xDA ; 2.7182818 (e) is given by 0x40 0x2D 0xF8 0x54 对于感兴趣的用户,请参阅相关芯片的数据表。

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

因此,它归结为如何在8位体系结构中添加两个32位浮点的问题,该体系结构甚至不支持特定于浮点的指令集,如FADD

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

对于感兴趣的用户,请参阅相关芯片的数据表。指令集从第301页开始。

我认为您有以下选项:

  • 查看avr libc以了解实现细节
  • 用c语言编写程序
    我打赌AVRCC编写的汇编代码(在效率和正确性方面)比您更好
  • 使用更简单的数字格式。如:
    • 具有固定缩放的某些定点格式
    • 一些没有IEEE开销的快速浮点格式。取决于您的要求,例如:
      • 8位/16位尾数,8位指数
      • 类似于blackfin应用程序中显示的模拟设备注意:
下面的书也是基本理解的好来源:

“基本功能的软件手册” 作者:威廉·科迪,威廉·韦特


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

我认为您有以下选项:

  • 查看avr libc以了解实现细节
  • 用c语言编写程序
    我打赌AVRCC编写的汇编代码(在效率和正确性方面)比您更好
  • 使用更简单的数字格式。如:
    • 具有固定缩放的某些定点格式
    • 一些没有IEEE开销的快速浮点格式。取决于您的要求,例如:
      • 8位/16位尾数,8位指数
      • 类似于blackfin应用程序中显示的模拟设备注意:
下面的书也是基本理解的好来源:

“基本功能的软件手册” 作者:威廉·科迪,威廉·韦特

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

因此,问题归结为如何在8位体系结构中添加两个32位浮点,该体系结构甚至不支持特定于浮点的指令集,如FADD

avr libc库可以做到这一点。因此,你也应该这样做

因此,问题归结为如何在8位体系结构中添加两个32位浮点,该体系结构甚至不支持特定于浮点的指令集,如FADD


avr libc库可以做到这一点。因此,您也应该这样做。

与任何其他定点计算机进行浮点运算的方式相同。这和你在小学时做数学一样。使用add,将小数点对齐(指数必须匹配),然后进行加法。然后对于float,您可能需要将小数点后一位标准化。基本上,如果你还不知道如何进行组装,你就不会进行组装,即使你知道了,那也太疯狂了,只要把源代码放到一个工作库中编译它,或者得到一个编译库的对象,链接它并调用它。如果你有一个硬件fpu,硬件也会这样做。@BlooIt一点也不疯狂。大约在80年代末之前,任何个人电脑中的浮点运算单元都是稀有而昂贵的配件——如果有的话。编译器刚刚生成了对使用整数指令实现浮点数学的库的调用。很慢,很好用。即使你不能使用一个库,从库中提取代码来完成必须要做的事情也是一个前进的方向。8位AVR是当前最先进的技术,远远没有过时。尝试获得Intel 32位CPU+电源+内存控制器+RAM+非易失性内存+ADC+串行接口控制器+。。。在一个8针的软件包中,价格不到1美元。与任何其他定点机器进行浮点运算的方式相同。这和你在小学时做数学一样。使用add,将小数点对齐(指数必须匹配),然后进行加法。然后对于float,您可能需要将小数点后一位标准化。基本上,如果你还不知道如何进行组装,你就不会进行组装,即使你知道了,那也太疯狂了,只要把源代码放到一个工作库中编译它,或者得到一个编译库的对象,链接它并调用它。如果你有一个硬件fpu,硬件也会这样做。@BlooIt一点也不疯狂。大约在80年代末之前,任何个人电脑中的浮点运算单元都是稀有而昂贵的配件——如果有的话。编译器刚刚生成了对使用整数指令实现浮点数学的库的调用。很慢,很好用。即使你不能使用一个库,从库中提取代码来完成必须要做的事情也是一个前进的方向。8位AVR是当前最先进的技术,远远没有过时。尝试获得Intel 32位CPU+电源+内存控制器+RAM+非易失性内存+ADC+串行接口控制器+。。。在一个不到1美元的8针包装中。假设OP需要做一些家庭作业,这是一个非常好的答案,可以帮助他学习他需要的东西+1假设OP需要做一些家庭作业,这是一个非常好的答案,可以帮助他学习他需要做的事情+1.