0
A
回答
0
這裏沒有真正的答案。一些處理器的指令給出了一些設置位(這對於通用編程來說是一個非常無用的指令,但對錯誤檢測很有用)。假設你沒有這樣的指令,通常零是寄存器最有可能的價值,你應該專門測試。那麼你不得不求助於數位。基本算法是與AND相加,將結果添加到累加器,右移,並與一個,並重復,直到你有所有的位。或者因爲你想要零位,XOR與1.但是我們可能會加快速度。你可以採取8位並做一個查詢。但是比8點鐘更快還是更慢呢?它只取決於特定的指令集,內存緩存等。如果我們有一個「寄存器文件」,通過索引號識別寄存器,我們可以設置寄存器0爲4,寄存器1爲3,寄存器2爲3,寄存器3爲2等等(16個寄存器的計數爲零位),輸出4位,然後使用結果來索引寄存器文件。你需要做幾個來證明這個開銷。
另一個問題是循環或展開會更快。這又是高度依賴於架構的。
然後另一個可能的竅門是,如果MSB被設置,則該數字爲負數。對於負數的測試是否比AND更快?很有可能。另一種情況是,乘以2或加上它本身可能會設置進位標誌,並且加進零可能會比加進寄存器更快。
有很多可能的小策略。
相關問題
- 1. 如何設置寄存器中的位?
- 2. 快速計算__m128i寄存器中的設定位數
- 3. 計算機如何將寄存器設置爲常量值?
- 4. 如何將NumberFormat設置爲小數點後0位的數字
- 5. 如何將XMM 128位寄存器分成兩個64位整數寄存器?
- 6. MIPS RISC計數存儲在寄存器中的非零位的數量$ a0
- 7. 位操作:在未知數中將位設置爲0
- 8. 彙編程序設計 - 將32位寄存器的內容移動到16位寄存器?
- 9. 如何在MIPS中將浮點寄存器設置爲0(或清除其值)。
- 10. NASM - 將8位數據放在32位寄存器的特定位置
- 11. VHDL寄存器設計
- 12. 32位寄存器作爲8位寄存器
- 13. (ARM程序集)向右移位寄存器1將所有位設置爲零
- 14. PHP力復位計數器爲0
- 15. LC3,將寄存器的值存儲到內存位置
- 16. 高效地將YMM寄存器的最低64位設置爲常量
- 17. 將兩個x86 32位寄存器存儲到128位xmm寄存器中
- 18. 移位寄存器爲std_logic_vector
- 19. 如何將Elastic Beanstalk環境的實例計數設置爲0?
- 20. VHDL移位寄存器的結構設計
- 21. 使用結構化Verilog的移位寄存器設計
- 22. MIPS中的浮點寄存器是哪些數字寄存器?
- 23. MySQL將索引計數重置爲0
- 24. Rails Redis重置計數器爲0
- 25. 32位寄存器將64位分成兩個32位寄存器
- 26. 使用寄存器的輸入設置
- 27. WordPress的寄存器設置 - 圖像
- 28. 如何設置數據斷點,當EAX寄存器設置爲特定值
- 29. 在Verilog寄存器中將0轉換爲Z
- 30. cuda寄存器的單位
可能的重複[在寄存器,ARM程序中計數爲1的最快方法](http://stackoverflow.com/questions/15736602/fastest-way-to-count-number-of-1s-in-一個寄存器-臂組件) – Notlikethat