在x86的gcc内联汇编中,如何移动标签在寄存器中的地址。 它应该是什么,而不是$标签在这里,因为汇编错误未定义的引用标签 。
__asm__ __volatile__ ("movl $label,%eax;"); label: .....
Win32 ASM程序不打印任何命令行
链接器如何确定.rodata节中某些数据的地址?
比较字符和Intel x86_64程序集
如何testingSTDIN读取错误
NASM程序集中的Windows API哔声function
Linux程序集; bss节内存初始化为0?
在32位模式下的NASM x86_64汇编:为什么此指令产生RIP相对寻址代码?
在Linux 64位上交叉编译Windows 64位程序集
无法打开包含文件“io.mac”程序集
你可以做:
register unsigned long eax __asm__("eax"); // See [1] eax = &&label; // See [2] label: // some code
但是,请注意:GCC可以自由地对优化下的代码进行重新排序,因此C label可能并不完全符合您的期望。
如果你需要精确地放置label (例如,因为一些汇编代码会跳到它),你最好在编写整个东西的时候。
[1] http://gcc.gnu.org/onlinedocs/gcc/Local-Reg-Vars.html#Local-Reg-Vars
[2] http://gcc.gnu.org/onlinedocs/gcc/Labels-as-Values.html
__asm__ __volatile__ ("label:");
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。