在不同的汇编语言中,MUL(x86)/ MULT(mips)指的是乘法.这是程序员的黑盒子.我感兴趣的是,无论架构如何,CPU实际上如何实现乘法.假设我的寄存器中有两个16位值,而且我是cpu,所以我必须使用其他的bit-fiddling指令实现MUL(和,或者,xor,not,shl,shr等).我该怎么办?
维基百科上的http://en.wikipedia.org/wiki/Multiplication_ALU列出了在数字电路中进行乘法的不同方法.
当我在一个项目中为大学中的Verilog中的DEC Alpha类处理器添加SIMD指令时,我们实现了一个Wallace树倍增器,主要原因是它在固定的周期内运行并且易于管道化.
编辑:你提到使用其他位摆弄指令,在现代处理器上乘法不会像这样进行微编码; 它会慢下来,处理器会在基准测试中被宰杀.