簡體   English   中英

添加16位數字,查找表,二進制加法或簡單加法的最有效方法?

[英]Most efficient method of adding 16-bit numbers, lookup table, binary addition or simple addition?

我正在嘗試為我要構建的MSP-430仿真器編碼ADD函數。

我想知道將兩個16位數字相加的查找表是否是有效檢索我的結果的可行解決方案。 我想到實現的替代方法是二進制加法循環,該循環將位一一加或簡單的十進制加法。 我需要能夠確定符號和進位(如果有)。

可以在此處找到有關微控制器的任何規格。

您可以使用簡單的32位二進制補碼算法。 假設srcdst存儲在uint32_t的低16位中,則以下代碼序列模擬ADD指令:

uint32_t xor = src ^ dst;
dst += src;
flags.N = (dst >> 15) & 1;
flags.C = (dst >> 16) & 1;
flags.V = ((~xor & (src ^ dst)) >> 15) & 1;
dst &= 0xFFFF;
flags.Z = (dst == 0);

加法本身的結果可以通過簡單地取32位加法的低16位來獲得。 N,Z和C標志也很容易計算。 (帶符號的)溢出標志V更棘手。 該代碼基本上測試srcdst的符號在添加之前是否相等,之后是否不同。

暫無
暫無

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

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