srk*_*ing 14 c algorithm microcontroller multiplying divide
我正在研究一种没有硬件乘法和除法的微控制器.我需要为这些基本操作制作软件算法,这是紧凑尺寸和效率之间的良好平衡.我的C编译器端口将使用这些算法,而不是C开发人员自己.
我的google-fu到目前为止主要是关于这个主题的噪音.
谁能指点我的信息?我可以使用add/sub和shift指令.基于表查找的算法也可能对我有用,但我有点担心编译器的后端这么多......嗯,可以这么说.
这是一个简单的乘法算法:
从最右边的乘法器开始.
如果乘数中的位为1,则添加被乘数
将被乘数乘以1
移到乘数中的下一位并返回步骤2.
这是一个除法算法:
如果除数大于被除数,则停止.
当除数寄存器小于股息寄存器时,向左移位.
将除数寄存器右移1.
从被除数寄存器中减去除数寄存器,并将结果寄存器中的位更改为与对除数寄存器进行的移位总数相对应的位.
在步骤1重新开始,除数寄存器处于原始状态.
当然你需要把支票除以0,但它应该有效.
当然,这些算法仅适用于整数.