This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] 编译器/TM4C1290NCPDT:到进位位的访问

Guru**** 2439710 points


请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/625238/compiler-tm4c1290ncpdt-access-to-carry-bit

器件型号:TM4C1290NCPDT

工具/软件:TI C/C++编译器

您好!

我要添加到32位值(c 代码)、并希望评估进位位(TM4C129、Launchpad)。 我认为该位在寄存器 APSR 中、但我不知道如何访问 C 中的内核寄存器。有什么简单的方法吗?


感谢你的任何帮助

此致

Micky

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    因为您使用的是"C"-这种详细程度不是"为您管理?"
    Joseph Yiu 的著作《ARM Cortex-M3/M4的最终指南》提供了您所寻求的详细信息。 (如果您真的想"抬起盖子"。)
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    [引用 user="Michael Schuster"]我要添加到32位值(c 代码)并希望评估进位位[/引用]

    为什么? 我想考虑一下 a)有用和 b)明确定义的情况。 我不能提出任何(尤其是 b)。

    Robert

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    大家好、我想到了
    bisqwit.iki.fi/...

    我可以使用以下命令读取寄存器:

    uint32_t ufnXPSR (空)

    _asm ("夫人 r0、xpsr\n"
    " BX lr\n");
    //满足编译器要求
    返回(0);


    无论如何、进位位在一个溢出后未被置位。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    嗯、这是汇编器、而不是 C、但你仍然没有说明为什么要这么做。

    Robert
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Michael、

    我想我们大家仍然对使用 C 代码时需要进行汇编级添加感到困惑... C 函数将自动为您处理此问题? 除了实验之外、还有其他用途吗?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    如常注意到的那样-海报永远不会/不会证明他们(有点奇怪)的请求...
    正如最初的回答帖子所说的-海报(声称)使用"C"(否定这种需要)-这(使用 C)可能证明不是(真实的)案例!

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Robert、

    您是否看到上面的链接(bisqwit.iki.fi/.../ 和"添加大于本机寄存器大小的整数")。


    我想添加较大的 INTS,并且认为直接获得进位比与伪代码进行比较容易:
    UINT_TYPE A = ORIGINAL_1;
    uint_type b = original_2;
    UINT_TYPE 结果= a + b;
    bool 进位=结果< A;

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    @CB1_MOBILE:我不想说不礼貌,我希望能以正常的方式问。 此外、我还提供了具有大量数字加法的链接。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    实际上-没有人声称(任何)不礼貌-当 C 代码(如您所说)"发挥作用"时、"使用进位位"的理由很少(即没有)!
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    [引用 user="Michael Schuster"]您是否看到了上面的链接(bisqwit.iki.fi/.../ 和"添加大于本机寄存器大小的整数")。

    我不会通过链接至少对什么是"嘿"进行一些解释、即使这样、我也很谨慎。

    [引用 user="Michael Schuster"]我想添加较大的 INTS,并认为直接获取进位可能比与伪代码进行比较容易:

    您确实意识到、这种方式有本地支持、比您可以编写的任何内容都要高效得多。 至少高达64位。 除此之外、还有可用的库。

    Robert

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我需要256位。 我可以使用伪代码、但我想知道如何访问进位位。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    [引用 USER="Michael Schuster">我需要256位。 我可以使用伪代码、但我想知道如何访问进位位。[/quot]

    有现成的库可以为您实现这一目的。

    我认为、在任何处理器上 、添加后都没有一种可靠的方法来访问进位位。 至少您需要使用易失性玩游戏。 在您完成此操作时、您可能会提前使用汇编语言。

    Robert

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Michael、

    正如罗伯特所建议的、你应该寻找一个已经制作好的图书馆来处理这一要求、而不是试图痛苦地重新发明轮子。 鉴于存在这样的图书馆,我对如何完成你所寻求的工作没有比你更好的想法,我现在不能为你的工作提供任何帮助/支持。