assembly - x86 64 汇编

标签 assembly x86-64

我正在编写一个自修改代码。

movq      $TARGET_CIA, 0x550(%rax)

此符号 TARGET_CIA 最初未定义,在运行时我尝试将 64 位立即值复制到此位置。但在编译时,该指令将这个未定义立即值的值视为 32 位,当我尝试复制 64 位时,我在其位置看到带符号的扩展 32 位。 有没有办法让这个 undefined symbol 被视为 64 位值?

最佳答案

你需要

movabs $0x1234567890abcdef, 0x550(%rax)

64 位立即数需要 movabs 指令。

关于assembly - x86 64 汇编,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4182210/

相关文章:

macos - 在OSX10.6上反汇编为x86_64(但使用_Intel_语法)

c - movq 指令出现段错误?

c - 拆解二元炸弹第三阶段逻辑难理解

linux - x86 指令格式 : "ba 0e 00 00 00" . .. "mov $0xe,%edx"

assembly - [BITS 16] 和 [ORG 0x0000] 指令的顺序

linux - 为什么 'syscall' 指令在 Linux 下不起作用?

assembly - 如何将此 ATT 程序集转换为英特尔语法?不使用寄存器跳转到非相对地址

gcc - 什么是扩展汇编器中的 "=qm"

c - 我需要帮助将 Intel 内联 asm 转换为 AT&T,以便我可以使用 gcc 编译它

visual-c++ - Visual C++ 中是否有 X64 固有的 8 位原子 CAS (cmpxchg)?