【发布时间】:2021-06-23 14:52:33
【问题描述】:
我想验证我的 stw 是否确实使用 C 写入了内存位置。
我知道我可以使用加载字来读取它(只要我不使用写入它的同一个寄存器?),但是在 C 中可以使用的等效语法是什么?
【问题讨论】:
-
你写信给
stw的地址是什么? C 程序应该如何知道该地址?您是否关心数据是否实际写入物理内存,而不仅仅是缓存? -
@EricPostpischil 见上文以进行澄清。这一切都在同一个项目下。我会知道写入数据所在的地址。数据已写入缓存,我需要确保“程序集写入”实际上已写入缓存。
-
您的内联 asm 缺少
"memory"clobber:对它的 C 访问可以假定 asm 语句没有更改它。 (stackoverflow.com/tags/inline-assembly/info) 你也忘了告诉编译器你修改的寄存器,包括"cc"条件代码,如果任何 PowerPC(?) 指令这样做的话。 -
@PeterCordes 它是 PowerPC
-
@PeterCordes 我得看看 clobber 做了什么。我对汇编不太了解,但我已经包含了上面的更多代码,因为我不确定它是否相关或不是,这可能是也可能不是您所引用的内容。
标签: c assembly memory inline-assembly powerpc