簡體   English   中英

有沒有辦法為分數乘法編寫單條指令?

[英]Is there a way to write single instruction for fractional multiplication?

我正在嘗試編寫一條 68000 指令,將 D0 中的 32 位無符號值乘以 0.125。 然而,分數乘法不可用。 所以我想知道是否有任何方法可以繞過它? 它應該是無符號的,0.125 = 1/8。 因此,我認為它會起作用的方式是:

LSL (LSR #0,#3),D0

這甚至沒有運行,我不知道我還能怎么做。

這是匯編,您不能僅僅組合這樣的指令來組合表達式。 每條指令都需要在自己的行上。 如果你想實現(x >> 3) << 3你必須先右移,然后左移,這是兩個單獨的指令:

LSR.L #3,D0
LSL.L #3,D0

順便說一句,請注意(x >> N) << N等價於x & -(1 << N) ,在N=3的情況下為: x & -8 ,或在 68k 匯編AND.L #-8,D0 (或十六進制AND.L #$fffffff7,D0 )。

但是,如果您只想乘以 0.125(即除以 8),則右移一次就足夠了:

LSR.L #3,D0

不確定您要實現的目標:

LSL (LSR #0,#3),D0

如果您想將d0的值邏輯右移三位(即除以8或乘以0.125 ),那將簡單得多:

lsr #$03, d0 ;; or lsr.l

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM