误报:未定义或垃圾值返回给调用者

2023-12-01

以下代码使用内联汇编填充结果:

uint64_t Foo::f() {
    uint64_t result;

    asm volatile
    ("vldmia        %1, {q0-q1}     \n" // q0-1 = *this

     ⋮

     "vstmia        %0, {d0}        \n" // result = d0

     :: "r"(&result), "r"(this)
     : "q0", "q1");

    return result;
}

The result变量在汇编代码中无条件设置,但 Xcode 的分析器似乎忽略了这一点(流程分析直接从声明跳到返回语句)并抱怨:

…/BitBoard.cpp:26:9: Undefined or garbage value returned to caller

有没有一种方法可以安抚分析器而不浪费初始化周期result?

EDIT:我已经尝试过指定输出约束的建议:

: "=r"(&result) : "r"(this), "r"(&result)

但是编译器会发出“asm 输出中无效的左值”的错误消息。删除&编译但返回看似随机的结果。改变vstmia %0, {d0} to vmov %0, d0也失败,并显示“指令操作数无效”。

我怀疑我必须标记result作为输出,按照建议,并在汇编代码中以不同的方式填充它,但我找不到任何关于知道这样做的信息。


我怀疑这是由于缺乏输出约束.

尝试这个,

uint64_t Foo::f() {
    uint64_t result;

    asm /* volatile */
    ("vldmia        %1, {q0-q1}     \n" // q0-1 = *this

     ⋮

     "vstmia        %0, {d0}        \n" // result = d0

     : "=w"(result): "r"(this) : "q0", "q1");

    return result;
}

您必须使用output约束,"=w"(result),告诉编译器汇编器正在设置一个值。你可能不需要volatile如果你这样做。至少,这是一个值得消除的好问题。

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

误报:未定义或垃圾值返回给调用者 的相关文章

  • 如何使 Windows 窗体的关闭按钮不关闭窗体但使其不可见?

    该表单有一个 NotifyIcon 对象 当用户单击 关闭 按钮时 我希望表单不关闭而是变得不可见 然后 如果用户想再次查看该表单 可以双击系统托盘中的图标 如果用户想关闭表单 可以右键单击该图标并选择 关闭 有人可以告诉我如何使关闭按钮不
  • 访问私人成员[关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 通过将类的私有成员转换为 void 指针 然后转换为结构来访问类的私有成员是否合适 我认为我无权修改包含我需要访问的数据成员的类 如果不道德 我
  • Qt-Qlist 检查包含自定义类

    有没有办法覆盖加载自定义类的 Qt QList 的比较机制 即在 java 中你只需要重写一个比较方法 我有一个带有我的自定义类模型的 QList QList
  • 获取按下的按钮的返回值

    我有一个在特定事件中弹出的表单 它从数组中提取按钮并将标签值设置为特定值 因此 如果您要按下或单击此按钮 该函数应返回标签值 我怎样才能做到这一点 我如何知道点击了哪个按钮 此时代码返回 DialogResult 但我想从函数返回 Tag
  • linux perf:如何解释和查找热点

    我尝试了linux perf https perf wiki kernel org index php Main Page今天很实用 但在解释其结果时遇到了困难 我习惯了 valgrind 的 callgrind 这当然是与基于采样的 pe
  • 为什么#pragma optimize("", off)

    我正在审查一个 C MFC 项目 在某些文件的开头有这样一行 pragma optimize off 我知道这会关闭所有以下功能的优化 但这样做的动机通常是什么 我专门使用它来在一组特定代码中获得更好的调试信息 并在优化的情况下编译应用程序
  • 指针问题(仅在发布版本中)

    不确定如何描述这一点 但我在这里 由于某种原因 当尝试创建我的游戏的发布版本进行测试时 它的敌人创建方面不起作用 Enemies e level1 3 e level1 0 Enemies sdlLib 500 2 3 128 250 32
  • C#:如何防止主窗体过早显示

    在我的 main 方法中 我像往常一样启动主窗体 Application EnableVisualStyles Application SetCompatibleTextRenderingDefault false Application
  • arm64和armhf有什么区别?

    Raspberry Pi Type 3 具有 64 位 CPU 但其架构不是arm64 but armhf 有什么区别arm64 and armhf armhf代表 arm hard float 是给定的名称Debian 端口 https
  • 如何衡量两个字符串之间的相似度? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 给定两个字符串text1 and text2 public SOMEUSABLERETURNTYPE Compare string t
  • for循环中计数器变量的范围是多少?

    我在 Visual Studio 2008 中收到以下错误 Error 1 A local variable named i cannot be declared in this scope because it would give a
  • clang 实例化后静态成员初始化

    这样的代码可以用 GCC 编译 但 clang 3 5 失败 include
  • 从库中捕获主线程 SynchronizationContext 或 Dispatcher

    我有一个 C 库 希望能够将工作发送 发布到 主 ui 线程 如果存在 该库可供以下人员使用 一个winforms应用程序 本机应用程序 带 UI 控制台应用程序 没有 UI 在库中 我想在初始化期间捕获一些东西 Synchronizati
  • C++ 复制初始化和直接初始化,奇怪的情况

    在继续阅读本文之前 请阅读在 C 中 复制初始化和直接初始化之间有区别吗 https stackoverflow com questions 1051379 is there a difference in c between copy i
  • WCF:将随机数添加到 UsernameToken

    我正在尝试连接到用 Java 编写的 Web 服务 但有些东西我无法弄清楚 使用 WCF 和 customBinding 几乎一切似乎都很好 除了 SOAP 消息的一部分 因为它缺少 Nonce 和 Created 部分节点 显然我错过了一
  • 为什么我收到“找不到编译动态表达式所需的一种或多种类型。”?

    我有一个已更新的项目 NET 3 5 MVC v2 到 NET 4 0 MVC v3 当我尝试使用或设置时编译出现错误 ViewBag Title财产 找不到编译动态表达式所需的一种或多种类型 您是否缺少对 Microsoft CSharp
  • const、span 和迭代器的问题

    我尝试编写一个按索引迭代容器的迭代器 AIt and a const It两者都允许更改容器的内容 AConst it and a const Const it两者都禁止更改容器的内容 之后 我尝试写一个span
  • Validation.ErrorTemplate 的 Wpf 动态资源查找

    在我的 App xaml 中 我定义了一个资源Validation ErrorTemplate 这取决于动态BorderBrush资源 我打算定义独特的BorderBrush在我拥有的每个窗口以及窗口内的不同块内
  • 如何使用 std::string 将所有出现的一个字符替换为两个字符?

    有没有一种简单的方法来替换所有出现的 in a std string with 转义 a 中的所有斜杠std string 完成此操作的最简单方法可能是boost字符串算法库 http www boost org doc libs 1 46
  • C 中的异或运算符

    在进行按位操作时 我在确定何时使用 XOR 运算符时遇到一些困难 按位与和或非常简单 当您想要屏蔽位时 请使用按位 AND 常见用例是 IP 寻址和子网掩码 当您想要打开位时 请使用包含或 然而 XOR 总是让我明白 我觉得如果在面试中被问

随机推荐

  • 比较 Unix/Linux IPC

    Unix Linux 提供了许多 IPC 管道 套接字 共享内存 dbus 消息队列 每种应用最适合的应用是什么 它们的性能如何 Unix IPC 以下是七大 Pipe 仅在作为父 子相关的进程中有用 称呼pipe 2 and fork 2
  • 如何将第二个模式添加到我的 html 页面

    我在上一篇文章中没有解释我的问题 所以我想在我的html页面中添加第二个模态 所以如果您单击 按钮1 它将打开 模态1 如果您单击 按钮2 它将打开 模态2 但是 按钮3 按钮4 按钮5 和 按钮6 打开 模态2 当我创建第二个模态并设置下
  • 反转字符串大小写

    我正在尝试编写一个函数 该函数接受字符串并将所有小写字母更改为大写字母 反之亦然 lower UPPER 将翻译为 LOWER upper 这是我所拥有的 var convertString function str var s var i
  • 如何禁用 Spring Jpa 异常转换器方面

    我正在从 Spring 2 5 6 迁移到 3 2 5 jar spring aspects 3 2 5 包含新方面 JpaExceptionTranslatorAspect 它将标准 JPA 异常转换为 Spring 异常 这似乎是 Ro
  • 使用CSS将div的底部弯曲到内部

    我想用 CSS 弯曲这个矩形 div 背景的底边 所以结果是这样的 Does someone have an idea perhaps how it could be achieved curved margin 0 auto height
  • 动态更改 paginate_by 的值

    我希望能够允许用户更改默认页面大小 paginate by 我当前的页面大小设置为10 我想要有 25 50 等等的按钮 我正在使用 postgresql 11 4 运行 Django 2 2 和 Python 3 73 我的views p
  • Glassfish 中是否有可能为不同包记录单独的文件

    我们使用 glassfish 作为我们的应用程序服务器 我们想要单独记录消息 例如 如果日志来自xxx company xxx service包 则日志文件命名为service log 如果日志来自xxx company xxx dao 则
  • E2099 转换或算术运算溢出

    我想将 int64 与这样的变量进行比较 const GB 1073741824 if DiskFile Size lt 1 GB then 它适用于 1 但不适用于 3 if DiskFile Size lt 3 GB then 这个帖子
  • 接收来自 HTTP 请求返回的 JSON 数据

    我有一个工作正常的网络请求 但它只是返回状态 OK 但我需要我要求它返回的对象 我不知道如何获取我请求的 json 值 我刚开始使用 HttpClient 对象 是否有我遗漏的属性 我真的需要返回的对象 谢谢你的帮助 拨打电话 运行良好会返
  • gcc 找不到 -lgcc, g++.exe: 错误: CreateProcess: 没有这样的文件或目录

    我正在尝试在 Windows 上使用 MingW 但是当我尝试编译我的 c c 文件时 使用 C gcc 编译时会出现以下错误 gt gcc c Users Administrator Desktop C C helloworld hell
  • 使用 Swift 在 Whatsapp 上分享图像

    我正在创建一个应用程序来通过社交媒体平台共享图像 尤其是在 WhatsApp 上 我尝试使用UIActivityViewController但当显示工作表时 它不会显示 WhatsApp 选项 我在网上搜索并找到下面的代码 显示工作表时显示
  • Laravel 5.3:如何在服务提供商中使用身份验证?

    我通过从表中获取值来传递共享视图中的值 为此我需要知道用户 ID 但是Auth check 返回假 我该怎么做 下面是代码 public function boot basket count 0 if Auth check always f
  • 使用去抖 onChange 处理程序设置输入值

    在我的 React Hooks 应用程序中 我需要让用户在输入字段中键入 1000 毫秒 当 1000 毫秒到期时 将发送带有输入值的 API 请求
  • 对象中没有定义的类型声明意味着什么?

    Scala 允许使用以下方式定义类型type关键字 根据声明时间的不同 其含义和用途通常略有不同 如果你使用type在对象或包对象内部 您可以定义类型别名 即另一种类型的更短 更清晰的名称 package object whatever t
  • CRM 2011 KeyNotFoundException异常

    我是 CRM 开发的新手 我有一个自定义实体 客户 该实体有一个名为 defaultcustomer 的字段 可以是 TRUE 或 FALSE 我正在开发一个插件 我需要将所有 客户 的 defaultcustomer 设置为 FALSE
  • 在QTextEdit中覆盖paintEvent以在单词周围绘制矩形

    I use QTextEdit from PyQt5我想在选定的单词周围放置一个框架 按照musicamante的建议 我尝试覆盖paintEvent 我想从光标位置提取的矩形的坐标 所以 我把光标放在TextEditor在文本的开头和结尾
  • 使用 svg 旋转谷歌地图上的标记

    因此 我已阅读有关该主题的堆栈溢出和网络上的所有主题 我可以以所需的程度显示标记 但我无法成功的是显示 svg 文件中的所有 图层 我的 svg 文件是这样的
  • 使用 PHP 生成 MySQL 到 Excel

  • 如何获取 datagridview 的行值并使用同一行中的按钮将其传递到另一个表单

    Public Sub LoadDataAS grdApplicantsAS DataSource Nothing grdApplicantsAS Columns Clear txtSearchBar1 Clear mycom Connect
  • 误报:未定义或垃圾值返回给调用者

    以下代码使用内联汇编填充结果 uint64 t Foo f uint64 t result asm volatile vldmia 1 q0 q1 n q0 1 this vstmia 0 d0 n result d0 r result r