本文介绍了我如何告诉gcc我的内联程序集破坏了堆栈的一部分?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

考虑像这样的内联汇编:

  uint64_t flags; 
asm(pushf\\\
\tpop%0:= rm(flags):: / * ??? * /);

尽管事实上可能有某种内在因素来获取RFLAGS的内容,但我如何向编译器指示我的内联程序集在栈顶压住了一个四字内存?

解决方案

据我所知,目前这是不可能的。


Consider inline assembly like this:

uint64_t flags;
asm ("pushf\n\tpop %0" : "=rm"(flags) : : /* ??? */);

Nonwithstanding the fact that there is probably some kind of intrinsic to get the contents of RFLAGS, how do I indicate to the compiler that my inline assembly clobbers one quadword of memory at the top of stack?

解决方案

As far as I am concerned, this is currently not possible.

这篇关于我如何告诉gcc我的内联程序集破坏了堆栈的一部分?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

08-29 07:05