FLAGS/EFLAGS 是破坏列表的“CC”(条件控制)的一部分吗?

2024-03-13

这是后续扩展汇编器中的“=qm”是什么 https://stackoverflow.com/questions/21516852/what-is-qm-in-extended-assembler.

使用时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
    ...
}

Are the FLAGS and EFLAGS寄存器被视为条件控制的一部分,以便它向编译器传达正确的信息?上面的内容是否应该写成:

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

或者是使用"cc"虚假的?

我知道如果不需要的话使用它是无害的。从扩展ASM http://gcc.gnu.org/onlinedocs/gcc/Extended-Asm.html:

如果您的汇编指令可以更改条件代码寄存器, 将“cc”添加到被破坏的寄存器列表中。某些机器上的 GCC 将条件代码表示为特定的硬件寄存器; ‘抄送’ 用于命名该寄存器。在其他机器上,条件代码是 处理方式不同,指定“cc”没有效果。但它是 无论什么机器都有效。

如果它是假的,它适用于哪些架构? (我认为 ARM 和CPSR注册,但我可能弄错了)。


根据说明书,是的——cc被破坏了。RDRAND还设置 OF、SF、ZF、AF、PF

在实践中,gcc 假设__asm__ block always打击[E|R]FLAGSx86 的条件代码寄存器。我没有参考资料,但你可以在类似的地方看到这个假设longlong.h各种 GNU 包中使用的标头。

正如您所说,如果不使用它是无害的。因此,您不妨包含它,因为它仍然提供语义意图,或者最坏的情况是评论。还要考虑 Clang 和 ICC 实现 GCC asm 语法,如果它们遵循"cc"破坏,而不是假设——尽管这不太可能。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

FLAGS/EFLAGS 是破坏列表的“CC”(条件控制)的一部分吗? 的相关文章

  • LINQ:根据列值选择重复行

    我试图在我的 DataGrid 中显示那些共享相同列值的行 例如 对于具有相同姓氏的人 我尝试了以下方法 dataGrid ItemsSource dataContext Addresses GroupBy a gt a SurName W
  • 在 Inno Setup 中实现脚本常量时出现“预期标识符”或“原型无效”

    因此 鉴于此功能 我在GetRoot ROOTPage Values 0 线 我希望它告诉我ROOTPage没有定义 const DefaultRoot C IAmGRoot Var ROOTPage TInputQueryWizardPa
  • 两个基本的 ANTLR 问题

    我正在尝试使用 ANTLR 来获取简单的语法并生成汇编输出 我在 ANTLR 中选择的语言是 Python 许多教程看起来非常复杂或详细阐述与我无关的事情 我真的只需要一些非常简单的功能 所以我有两个问题 将值从一个规则 返回 到另一规则
  • 使用 %w[] 创建包含空字符串的数组

    创建包含空字符串的数组 a b c 不是一个空格字符串 使用 W我可以用 W a b c 我也可以连接数组 但是是否可以使用空字符串创建数组 w 几个选项 W a b c z W a b c lt lt 我知道这没有使用 w 语法 但为了更
  • 为什么当大小大于 50 时,该程序花费的时间会呈指数级增长?

    所以我正在为类编写一个 ARM 汇编快速排序方法 我对大部分内容都有了解 除了复杂性没有意义 我们将其与我们制作的另一种冒泡排序方法进行比较 它对于具有 1 个参数和 10 个参数的示例表现更好 然而 我什至无法比较 100 个参数测试 因
  • 用于预乘 ARGB 的 SSE alpha 混合

    我正在尝试编写一个支持 SSE 的 alpha 合成器 这就是我想出的 首先 混合两个 4 像素向量的代码 alpha blend two 128 bit 16 byte SSE vectors containing 4 pre multi
  • 有没有办法使用 i387 fsqrt 指令获得正确的舍入?

    有没有办法使用 i387 fsqrt 指令获得正确的舍入 除了改变精确模式在 x87 控制字中 我知道这是可能的 但这不是一个合理的解决方案 因为它存在令人讨厌的重入型问题 如果 sqrt 操作中断 精度模式将出错 我正在处理的问题如下 x
  • 如何知道寄存器是否是“通用寄存器”?

    我试图了解寄存器必须具备什么标准才能被称为 通用寄存器 我相信通用寄存器是一个可以用于任何用途的寄存器 用于计算 将数据移入 移出等 并且是一个没有特殊用途的寄存器 现在我读到了ESP寄存器是通用寄存器 我猜是ESP寄存器可以用于任何事情
  • 语法高亮是如何构建的?

    我现在正在使用 Lazarus 构建一个开发人员编辑器 作为每个优秀的开发人员编辑器 它需要有语法突出显示 因此我想知道一些事情 语法高亮通常是如何构建的 使用许多ifs 更改 a 上的字体TextField TSynEdit这样做很好吗
  • ARMv8 A64 汇编中立即值的范围

    我的理解是 ARMv8 A64 汇编中的立即参数可以是 12 位长 如果是这样的话 为什么这行汇编代码是 AND X12 X10 0xFEF 产生此错误 使用 gcc 编译时 Error immediate out of range at
  • 从 exe 文件中获取汇编级代码?

    我当时正在做linux汇编编程 在过去的几天里我已经转而学习windows汇编编程 我在用ml作为我的汇编器和golink作为我的链接器 我有我的汇编代码并已获得我的exe从中 现在我需要取回它的十六进制 xff xab x55等等 在li
  • 使用 NEON 优化 Cortex-A8 颜色转换

    我目前正在执行颜色转换例程 以便从 YUY2 转换为 NV12 我有一个相当快的函数 但没有我预期的那么快 主要是由于缓存未命中 void convert hd uint8 t orig uint8 t result uint32 t wi
  • OCaml 文字负数?

    我在学 这是我觉得奇怪的事情 let test treeways x match x with when x lt 0 gt 1 when x gt 0 gt 1 gt 0 如果我这样称呼它 test threeways 10 我会得到类型
  • AES 在汇编中的实现 [关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 大家好 我正在尝试构建一个代码来演示
  • CSS变量名可以以数字开头吗?

    我想知道定义一个以这样的数字开头的 css 变量是否有效 root 1space 32px 这在 Chrome 上工作得很好 但是该代码没有经过验证https jigsaw w3 org css validator https jigsaw
  • AVX-512 指令编码 - {er} 含义

    在 Intel x86 指令集参考中 有许多 AVX 512 指令在指令中具有可选的 er 例如 VADDPD 的一种形式定义为 EVEX NDS 512 66 0F W1 58 r VADDPD zmm1 k1 z zmm2 zmm3 m
  • 为什么 { } 初始化需要 Add 方法?

    要使用这样的初始化语法 var contacts new ContactList Dan email protected cdn cgi l email protection Eric email protected cdn cgi l e
  • 如何编译GCC生成的asm?

    我正在玩一些汇编代码 有些事情困扰着我 我编译这个 include
  • 为什么 clang 使用 -O0 生成低效的 asm(对于这个简单的浮点和)?

    我正在 llvm clang Apple LLVM 版本 8 0 0 clang 800 0 42 1 上反汇编此代码 int main float a 0 151234 float b 0 2 float c a b printf f c
  • 为什么 FMA _mm256_fmadd_pd() 内在函数有 3 个 asm 助记符:“vfmadd132pd”、“231”和“213”?

    有人可以向我解释一下为什么融合乘法累加指令有 3 种变体 vfmadd132pd vfmadd231pd and vfmadd213pd 而只有一个 C 内在函数 mm256 fmadd pd 为了简单起见 在 AT T 语法中 有什么区别

随机推荐

  • 抑制命令行输出

    我有一个像这样的简单批处理文件 echo off taskkill im test exe f gt nul pause 如果 test exe 未运行 我会收到以下消息 ERROR The process test exe not fou
  • 静态主类 - AS3

    有没有一种方法可以使主类 基于主 fla 的类 静态 所以我们可以像在java中一样使用它 能够从其他类引用它 因为我必须将main本身的实例作为参数传递给一个类 否则我会失去引用 我尝试添加静态前缀 但似乎 as3 不允许 AS3中没有静
  • 生成随机数一次

    我需要创建一组 0 到 800 之间的随机数 问题是目前我需要快速执行此操作 并且每个数字仅返回一次 我目前的做法是 创建一个std vector包含从 0 到 800 的数字 使用选择一个号码numberVector rand numbe
  • 如何正确读取 Flux 并将其转换为单个 inputStream

    我在用着WebClient和定制BodyExtractor我的 spring boot 应用程序的类 WebClient webLCient WebClient create webClient get uri url params acc
  • Blazor WebAssembly Visual Studio 调试器问题

    我创建了一个干净的 Blazor PWA 项目 当我尝试使用调试器运行它时 不到一半的时间它无法正确启动 一半的时间实际上会有所改善 如果尝试使用调试器 F5 或调试 开始调试 启动 则会打开一个新的浏览器窗口 其中 URL 为 about
  • 适用于 Swift 5 和 Facebook SDK 5 的 Facebook GraphRequest

    我最近更新了我的所有pods和快速的语言Swift 5在我的项目中 收到了大量错误消息 我已经慢慢解决了这些消息 然而 我在 Facebook 上遇到了困难GraphRequest之前工作正常 特别是此错误消息位于version的参数Gra
  • 如何将 Log4J2 复合配置与 Spring Boot 结合使用

    我使用 Spring Boot 2 0 1 starter 和 log4j2 使用以下 POM WAR 文件托管在 Tomcat 8 中 而不是使用嵌入式 tomcat 应用程序日志写入控制台而不是写入日志文件 显然 Spring Boot
  • javascript 中的 location.search 是什么

    我想知道什么location search substring 1 事实上确实如此 我在某个网站上看到了这段代码 我尝试使用打印alert 但这并没有给出任何结果 它应该提醒 location href 吗 alert location s
  • 使用 Xamarin 项目中的 netstandard13 包

    我正在尝试使 Npgsql NET 的 PostgreSQL 提供程序 可供 Xamarin 用户使用 Npgsql已经支持 NET Platform Standard 版本3 并且该标准的文档包含以下句子 如果库面向 NET Platfo
  • 在 Ruby on Rails 中,DateTime、Timestamp、Time 和 Date 之间有什么区别?

    根据我的经验 在编程时获得正确的日期 时间总是充满危险和困难 Ruby 和 Rails 在这方面一直让我困惑 只是因为有太多的选择 我从来不知道我应该选择哪个 当我使用 Rails 并查看 ActiveRecord 数据类型时 我可以找到以
  • 菜单栏隐藏时加速器停止响应

    我有一个基于空地的 gtk3 用户界面 并且我为几个菜单项设置了加速器字段 我不确定 GtkBuilder 在加载林间空地文件时到底在幕后做了什么 使用全局 GtkAccelGroup 但最终结果是 当我隐藏菜单栏时 加速器快捷键停止工作
  • 如何在Javascript中按百分比使一种颜色与另一种颜色相似

    我有两种十六进制形式的颜色 000000 and ffffff 我想按百分比将第一种颜色与第二种颜色近似 就像是 var percent 0 50 var color1 000000 var color2 ffffff var newcol
  • 与 emacs/slime 的其他 Lisp/Scheme 实现等效的 'lein swank'

    我一直在使用 emacs slime 来编码 lisp 但是使用 Clojure 我发现了 lein swank 我必须说它非常有用 因为我可以连接到运行 clojure 的服务器 其他 Lisp 实现怎么样 哪些 Lisp 实现提供了与
  • Angular2重置表单并标记为未触及

    提交后如何重置表单并标记为未触及 干净等 因为我停留在页面上并且用户可以重新提交 this myForm reset this myForm markAsPristine this myForm controls options name
  • 在 Android 上录制视频时添加叠加

    我想在我的 Android 设备中通过摄像头录制视频 我需要在录制的电影上添加叠加图像 在 iOS 中我会使用GPUImage https github com BradLarson GPUImage 在Android中我发现Android
  • Android 无法接收组播数据包

    我正在玩一点多播套接字 我编写了一个向 Android 客户端发送消息的服务器 到目前为止 客户端应该只记录收到的消息 我注意到我的设备上没有收到多播数据包 这是服务器的代码 在电脑上运行 public class MulticastSer
  • 如何断言 std::mutex 是否被锁定?

    使用 GCC 4 8 2 在 Linux Debian Sid 64 位上 或 GCC 4 9 如果可用 在 C 11 中 我有一些互斥体 std mutex gmtx actually it is a static member in s
  • Django Sphinx 自动模块——基础知识 [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我有一个包含多个大型应用程序的项目 其中设置和应用程序文件是分开的 目录结构是这样的 项目名 init py apps init py
  • 是否有从 inputText 到 URL 的标准 JSF 转换器?

    我正在尝试转换inputText to java net URL在 JSF 页面中
  • FLAGS/EFLAGS 是破坏列表的“CC”(条件控制)的一部分吗?

    这是后续扩展汇编器中的 qm 是什么 https stackoverflow com questions 21516852 what is qm in extended assembler 使用时RDRAND 它设置 或取消设置 进位标志