您的位置:首页 > 财经 > 金融 > 徐州制作企业网站_网页设计与制作第二版电子版_ui设计公司_seo实训报告

徐州制作企业网站_网页设计与制作第二版电子版_ui设计公司_seo实训报告

2025/4/1 1:44:25 来源:https://blog.csdn.net/xiaozhiwise/article/details/143404741  浏览:    关键词:徐州制作企业网站_网页设计与制作第二版电子版_ui设计公司_seo实训报告
徐州制作企业网站_网页设计与制作第二版电子版_ui设计公司_seo实训报告

Add with Carry, setting flags, adds two register values and the Carry flag value, and writes the result to the destination register. It updates the condition flags based on the result.

带进位加法,设置标志,将两个寄存器值和进位标志值相加,并将结果写入目标寄存器。它根据结果更新条件标志。


32-bit variant
    Applies when sf == 0.
    ADCS <Wd>, <Wn>, <Wm>

64-bit variant
    Applies when sf == 1.
    ADCS <Xd>, <Xn>, <Xm>

Decode for all variants of this encoding
 integer d = UInt(Rd);
 integer n = UInt(Rn);
 integer m = UInt(Rm);
 integer datasize = if sf == '1' then 64 else 32;


Operation
 bits(datasize) result;
 bits(datasize) operand1 = X[n];
 bits(datasize) operand2 = X[m];
 bits(4) nzcv;
 
 (result, nzcv) = AddWithCarry(operand1, operand2, PSTATE.C);
 
 PSTATE.<N,Z,C,V> = nzcv;
 
 X[d] = result;


 (bits(N), bits(4)) AddWithCarry(bits(N) x, bits(N) y, bit carry_in)
     integer unsigned_sum = UInt(x) + UInt(y) + UInt(carry_in);
     integer signed_sum = SInt(x) + SInt(y) + UInt(carry_in);
     bits(N) result = unsigned_sum<N-1:0>; // same value as signed_sum<N-1:0>
     bit n = result<N-1>;
     bit z = if IsZero(result) then '1' else '0';
     bit c = if UInt(result) == unsigned_sum then '0' else '1';
     bit v = if SInt(result) == signed_sum then '0' else '1';
     return (result, n:z:c:v);

ADC指令用于把两个操作数相加,再加上CPSR中的C条件标志位的值,并将结果存放到目的寄存器中

adds r0, r4, r8     // 加低端的字
adcs r1, r5, r9     // 加第二个字,带进位
adcs r2, r6, r10    // 加第三个字,带进位
adc  r3, r7, r11    // 加第四个字,带进位

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com