【问题标题】:Moving register content to memory address in another register in x86_64将寄存器内容移动到 x86_64 中另一个寄存器中的内存地址
【发布时间】:2012-09-25 21:35:42
【问题描述】:

在 clang 中进行一些内联​​汇编(基本上是通过使用各种引用来猜测我的方式)并且我试图将 %rdi 的内容移动到 %rdx 指向的地址。但是我的语法都不起作用,这是:

mov %rdi, ptr %rdx

给予:

error: expected relocatable expression

怎么了? clang 中的内联汇编的语法是什么?谢谢。

【问题讨论】:

  • 也许反对者认为您的问题缺乏研究工作。除此之外,我看不出投反对票的正当理由。 (但你应该从你的问题中删除那个编辑,它不属于那里。)

标签: c assembly clang


【解决方案1】:

我不知道 clang 的汇编语法到底是什么,但是 gcc/gas 使用的 AT&T 语法应该是:

movq %rdi, (%rdx)

Intel/Microsoft 汇编语法是:

mov qword ptr [rdx], rdi

【讨论】:

  • 谢谢。我在 google 上搜索了至少 50 次,但不知何故,我的搜索都没有提出这种特殊的语法(括号)。我也使用过汇编程序,但对 gcc 样式的使用不多,从未见过。
  • @Hannes:我所知道的关于(糟糕的)AT&T gas 语法的一切,都是从gcc -S some-c-file.c 的输出中学到的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-10-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多