首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >msp430中的装配否定

msp430中的装配否定
EN

Stack Overflow用户
提问于 2019-10-04 20:24:46
回答 1查看 116关注 0票数 0

在R12中,我有以下在msp430程序集中否定某些整数值的版本:

代码语言:javascript
复制
inv R12
inc R12

这是根据手册和我认为这将是一样的工作?

代码语言:javascript
复制
inv R12
add #1, R12

但这会有效吗?为什么不呢?

代码语言:javascript
复制
sub #1, R12
inv R12

这仍然是新的,感谢您的任何帮助!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-10-05 07:01:04

INC dst是用ADD #1, dst模拟的,所以前两个版本完全相同。

至于第三个版本:在两种补码表示中,反转所有位都会计算负减1,所以您正在计算( + 1)(−x−1)或−(−(x + 1) + 1 ),这确实是一样的。

如果你想要一个更实际的演示,就用暴力:

代码语言:javascript
复制
#include <assert.h>
#include <stdint.h>
#include <stdio.h>

int main()
{
    for (uint32_t i = 0; i < 0x10000; i++) {
        uint16_t input = i;
        uint16_t output1 = (~input) + 1;
        uint16_t output2 = ~(input - 1);
        assert(output1 == output2);
    }
    puts("it works!");
    return 0;
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58242820

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档