gpt4 book ai didi

assembly - 80286 : Which is the fastest way to multiply by 10?

转载 作者:行者123 更新时间:2023-12-02 02:56:30 30 4
gpt4 key购买 nike

要将一个数字乘以 2 的任意倍数,我将对其进行多次移位。

有没有这样的技术可以在更少的周期内将数字乘以 10?

最佳答案

80286 没有桶形移位器,这是随 80386 一起引入的。根据 Microsoft 宏汇编器 5.0 文档 (1987) 中的时序表,SHL reg, immed8 需要 5+n 个周期,而 SHL reg, 1 需要 2 个周期。 ADD reg, reg 需要 2 个周期,MOV reg, reg 也是如此。 IMUL reg16, immed 需要 21 个周期。因此,乘以 10 的最快方法似乎是:

           ;       // cycles
shl ax, 1 ; *2 // 2
mov bx, ax ; *2 // 4
shl ax, 1 ; *4 // 6
shl ax, 1 ; *8 // 8
add ax, bx ; *10 // 10

或者,或者:

           ;      // cycles
mov bx, ax ; *1 // 2
shl ax, 1 ; *2 // 4
shl ax, 1 ; *4 // 6
add ax, bx ; *5 // 8
shl ax, 1 ; *10 // 10

无论哪种方式都是十个周期。

关于assembly - 80286 : Which is the fastest way to multiply by 10?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61033121/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com