如何在PIC​​18 ISA中处理分区

时间:2010-09-13 00:50:17

标签: assembly html microcontroller compiler-theory pic18

Converting to ASCII in C的扩展类型,我想知道PIC18X上的分区是如何处理的。

如果我执行DIV操作,编译器将其解释为多少指令? 完成操作需要多少个时钟周期?时钟周期数是否取决于我的被除数,除数或两者?

作为一个不那么重要的问题:第一个包含专用分区硬件的CPU是什么?

3 个答案:

答案 0 :(得分:1)

通常,DIV操作的周期数会有所不同(数据表通常提供最大周期#)。体面编译器并不关心指令所花费的周期数,而是进行各种优化(即,2的幂除以处理为移位)。

您可能需要查看this website以了解PIC的各种例程。

答案 1 :(得分:1)

取决于可变长度。 查看Microchip网页:AN614

从AN614 ......

        Clocks
FXD3232S 630 32 bit/32 bit -> 32.32 signed fixed point divide
FXD3232U 683 32 bit/32 bit -> 32.32 unsigned fixed point divide
FXD3231U 588 32 bit/31 bit -> 32.31 unsigned fixed point divide
FXD3131U 579 31 bit/31 bit -> 31.31 unsigned fixed point divide
FXD3224S 529 32 bit/24 bit -> 32.24 signed fixed point divide
FXD3224U 584 32 bit/24 bit -> 32.24 unsigned fixed point divide
FXD3223U 489 32 bit/23 bit -> 32.23 unsigned fixed point divide
FXD3123U 481 31 bit/23 bit -> 31.23 unsigned fixed point divide

因此对于32位/ 32位需要630个CPU周期。

答案 2 :(得分:1)

这些天在编程方面分歧很多,但我仍然对他们做很多微控制器项目很敏感。有了一张照片,你已经有一只手和一条腿绑在背后开始,做分歧是可怕的。我试图在PIC16上做同样的事情(二进制到ascii十进制),这很痛苦。所以我的自制车速表是十六进制的,或者我做了一个丑陋的if-then-else树。目前还没有用于图片的免费C编译器。

无论如何,8086有分歧。 8085似乎没有。但是ENIAC做了,它出现了一个平方根。现在这个alu算作CPU来满足你的“第一个具有鸿沟的CPU”的要求吗? ENIAC之前的机械机器也可以分开。 PDP-11似乎没有。没有在z80 / 8080上看到一个,在6502上没有.6800没有但是68000是的。 8051是令人惊讶的和8031.一些较老的,特别是我知道的6502,8088 / 86,有BCD数学。因此,不是用二进制做数学然后尝试做一堆除以10s来放入人类十进制ascii格式,你从头开始做bcd的数学运算,那么它更多的是转换为十六进制而没有上层字母,向右移4,用0xF加0x30,用0xF加0x30,重复。