这是扩展汇编程序中What is"=qm"的后续。
当使用RDRAND
时,它设置(或取消设置)进位标志(CF
char rc;
unsigned int val;
__asm__ volatile(
"rdrand %0 ; setc %1"
: "=r" (val), "=qm" (rc)
);
// 1 = success, 0 = underflow
if(rc) {
// use val
...
}
FLAGS
和EFLAGS
寄存器是否被视为条件控制的一部分,以便将正确的信息传递给编译器?上面应该写成:
__asm__ volatile(
"rdrand %0 ; setc %1"
: "=r" (val), "=qm" (rc)
:
: "cc"
);
还是使用
“cc”
是虚假的?
我知道如果不需要的话使用它是无害的。从扩展ASM:
如果你的汇编指令可以改变条件码寄存器,将“cc”添加到被破坏的寄存器列表中。某些机器上的GCC将条件码表示为特定的硬件寄存器;“cc”用来命名这个寄存器。在其他机器上,条件代码的处理方式不同,指定“cc”没有任何作用。但是不管什么机器都有效。
如果它是虚假的,它适用于哪些架构?(我假设ARM和
CPSR
注册,但我可能搞错了)。
根据手册,是的- cc
被撞毁。< code>RDRAND还包括SF、ZF、AF和PF套件
在实践中,gcc 假设__asm__
块总是阻塞 [E|R]标志
条件代码寄存器 x86.我没有参考文献,但是你可以在各种GNU软件包中使用的longlong.h
头文件这样的地方看到这个假设。
正如你所说,如果不使用,它是无害的。出于这个原因,您还可以包括它,因为它仍然提供语义意图,或者最坏的情况下提供注释。还要考虑到Clang和ICC实现了GCC asm语法,如果他们遵守“cc”
clobber,而不是假定它,他们将符合文档,即使这不太可能。
使用时,它设置(或取消设置)进位标志(): 和寄存器是否被视为条件控制的一部分,以便将适当的信息传递给编译器?如果将上述内容写成: 还是的使用是虚假的? 如果它是假的,它适用于什么架构?(我推测ARM和寄存器,但我可能弄错了)。
控制台-部门-列表 接口URL {youke-url}/console/Index.php?c=department&a=list×tamp=1607677497&access_key=abc&sign=c7da8103312da8793af4f526a42cb6ebaa06cfd4 请求方式 POST Content-Type form-data 请求Query参数 参数 示例值 是否
用法 列表控制分为如下四种: 状态 主操作(包括文本字符串) 次要操作 次要信息 列表标题的元素要容易分辨,首先要注意阅读顺序,所以,状态和主操作放在标题列表的左边。在这里,列表里面的文本内容也被认为是主操作的操作目标的一部分。 不要把两个展示图标和操作图标放在一起,比如复选框和头像 如果列表的主操作是做导航作用的,那么就不要使用icon。列表它本身以及它的上下文就已经可以让用户明白这个列表的用处
标签: Shell 条件判断:if语句 语法格式: if [ expression ] then Statement(s) to be executed if expression is true fi 注意:expression 和方括号([ ])之间必须有空格,否则会有语法错误。 if 语句通过关系运算符判断表达式的真假来决定执行哪个分支。Shell 有三种 if … else 语句:
控制台-部门-子部门列表 接口URL {youke-url}/console/Index.php?c=department&a=subInfo×tamp=1607677497&access_key=abc&sign=327dcb64d8d1ba76b11297241199107014261e0a 请求方式 POST Content-Type form-data 请求Query参数 参数
输入是按分数排序的,如下所示: 现在我需要在以下限制下从数组中选择10个得分最高的元素: 它们应该具有不同的 它们应该有不同的 同一。并且来自同一的任何子序列的长度不应大于2。 如果已经有一个选定的元素具有此,那么新元素将被丢弃。 如果已经有一个选定的元素具有这个,那么新元素将被丢弃。 如果已经有三个选定元素具有此,那么新元素将被丢弃。 如果在选定的尾部已经有两个元素具有此,那么新元素将被丢弃。