有一天,我在Verilog學到了一個很酷的技巧。當你需要反覆做某件事時。您可以使用移位寄存器來計算增量的數量。只需將1從LSB移到MSB,並在到達MSB時完成。硬件啓發循環。廢話?
在C這將是這樣的:
for(j=0b1; !(j & (1<<16)); j=j<<1)
{
/*do a thing 16 times*/
}
我知道它的使用已受到限制,因爲位寬的,但它不涉及任何此外所以它是快。 所以我的問題:有沒有使用這個?在C語言或其他高級語言中使用它是否值得?
也許在資源有限的嵌入式系統中。
感謝
是什麼讓你認爲除了是不是轉移慢?它當然不在任何現代的CPU上,甚至不是嵌入式核心。也不是測試。所以是的,廢話。 –
有趣,但我沒有看到太多的CPU週期收益在這裏。 ! –
@HansPassant我認爲加法器機制比重新安排一些電線需要更多的資源。當我在FPGA上使用這種技術時,我獲得了一些空間。但後來我用了2048位寬的寄存器。 – Stiggo