gpt4 book ai didi

gcc - 什么是扩展汇编器中的 "=qm"

转载 作者:行者123 更新时间:2023-12-05 02:23:32 36 4
gpt4 key购买 nike

我正在查看英特尔提供的 RDRAND 指令的引用实现。页面是Intel Digital Random Number Generator (DRNG) Software Implementation Guide , 代码来自 Intel Digital Random Number Generator software code examples .

以下是英特尔的相关部分。它读取一个随机值并将其放入 val,并在成功时设置进位标志。

char rc;
unsigned int val;

__asm__ volatile(
"rdrand %0 ; setc %1"
: "=r" (val), "=qm" (rc)
);

// 1 = success, 0 = underflow
if(rc) {
// use val
...
}

很抱歉不得不问。我不认为它包含在 GNU Extended Assembler 中,并且搜索“=qm”会产生虚假命中。

"=qm" 在扩展汇编器中是什么意思?

最佳答案

您正在查看的是 inline assembler constraint . GCC 文档位于 6.47.3.1 Simple Constraints6.47.3.4 Constraints for Particular Machinesx86 系列 部分下。这个 (=qm) 结合了三个标志,表示:

  • =:操作数是只写的 - 它之前的值不相关。
  • q:操作数必须在寄存器abcd中(例如,它不能在 esi 中)。
  • m:操作数可能放在内存中。

关于gcc - 什么是扩展汇编器中的 "=qm",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21516852/

36 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com