[英]Most efficient method of adding 16-bit numbers, lookup table, binary addition or simple addition?
我正在嘗試為我要構建的MSP-430仿真器編碼ADD函數。
我想知道將兩個16位數字相加的查找表是否是有效檢索我的結果的可行解決方案。 我想到實現的替代方法是二進制加法循環,該循環將位一一加或簡單的十進制加法。 我需要能夠確定符號和進位(如果有)。
可以在此處找到有關微控制器的任何規格。
您可以使用簡單的32位二進制補碼算法。 假設src
和dst
存儲在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更棘手。 該代碼基本上測試src
和dst
的符號在添加之前是否相等,之后是否不同。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.