Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/80.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Assembly PIC18 ISA中如何处理部门_Assembly_Html_Microcontroller_Compiler Theory_Pic18 - Fatal编程技术网

Assembly PIC18 ISA中如何处理部门

Assembly PIC18 ISA中如何处理部门,assembly,html,microcontroller,compiler-theory,pic18,Assembly,Html,Microcontroller,Compiler Theory,Pic18,有点像的扩展,我想知道在PIC18X上如何处理分区 如果我执行一个DIV操作,编译器会解释为多少条指令? 完成操作需要多少个时钟周期?时钟周期的数量取决于我的除数、除数还是两者 作为一个不太重要的附带问题:什么是第一个包含专用除法硬件的CPU?通常,DIV操作的周期数是不同的(数据表通常提供最大周期)。体面的编译器并不真正关心指令需要多少个周期,而是进行各种优化(例如,2的幂除法作为移位处理) 您可能想查看PIC的各种例程。取决于可变长度。 查看微芯片网页: 从AN614 Clo

有点像的扩展,我想知道在PIC18X上如何处理分区

如果我执行一个DIV操作,编译器会解释为多少条指令? 完成操作需要多少个时钟周期?时钟周期的数量取决于我的除数、除数还是两者


作为一个不太重要的附带问题:什么是第一个包含专用除法硬件的CPU?

通常,DIV操作的周期数是不同的(数据表通常提供最大周期)。体面的编译器并不真正关心指令需要多少个周期,而是进行各种优化(例如,2的幂除法作为移位处理)

您可能想查看PIC的各种例程。

取决于可变长度。 查看微芯片网页:

从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周期。

这些天在编程中,除法被胡乱地抛来抛去,但我仍然对他们做很多微控制器项目很敏感。有了一张照片,你已经有一只手和一条腿绑在背后开始,做一个划分是可怕的。我试着在PIC16上做同样的事情(从二进制到ascii十进制),这很痛苦。所以我自制的速度表要么是十六进制的,要么就是我做了一个丑陋的if-then-else树。当时没有pic的免费C编译器

无论如何,8086有一个分歧。8085似乎不适用。但ENIAC做到了,而且它似乎是平方根。现在,该alu是否算作一个CPU来满足“第一个带除法的CPU”要求?早于ENIAC的机械机器也可以拆分。PDP-11似乎没有。z80/8080上没有看到,6502上没有。6800不,但68000是。8051是的,令人惊讶的是8031。一些老的,65028088/86,我特别知道,有BCD数学。因此,与其用二进制进行数学运算,然后尝试用一系列除以10的运算,将其转换为人类十进制ascii格式,不如从一开始就用bcd进行数学运算,然后更多地转换为不带大写字母的十六进制,右移4,使用0xF添加0x30,使用0xF添加0x30,重复