- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
x64 寄存器是否可以互换,从某种意义上说,使用它们的一种组合的任何指令都可以与其他任何组合一起使用?除了名称之外,是否存在性能差异或任何其他考虑因素使它们彼此不同?
最佳答案
不是。虽然大多数 x86 和 x86_64 指令可以使用任何寄存器作为 GPR,但有些指令只能使用特定的寄存器或一组寄存器,例如 movabs、mul、div...
有关隐式寄存器使用的更多详细信息,请阅读 here
另见 Are the data registers EAX, EBX, ECX and EDX interchangeable
关于assembly - RAX、RBX、RCX、RDX、RSI、RDI、RBP、RSP、R8-R15 是否可以互换?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20810464/
考虑以下几点: ammarfaizi2@integral:/tmp$ vi test.c ammarfaizi2@integral:/tmp$ cat test.c extern void use_b
您可以阅读有关 64 位调用约定的信息 here . x64 函数应该自行清理,但是,当我从 .asm 调用 malloc 时,它会覆盖 RSP 和 RSP+8 处的值。这似乎是非常错误的。有什么建议
使用ptrace获取另一个进程的寄存器时,有没有可能是停止点在内核空间(做系统调用之类的在sleep()),RIP在内核代码段,RSP是内核堆栈指针? 最佳答案 is it possible ...
有问题Compilers: Understanding assembly code generated from small programs编译器使用两个局部变量而不调整堆栈指针。 不调整 RSP
有问题Compilers: Understanding assembly code generated from small programs编译器使用两个局部变量而不调整堆栈指针。 不调整 RSP
我无法理解堆栈的工作原理。首先是我的小代码: void func1 ( int z ) { int i = 1; } int main ( ) { func1 ( 89 ); return
我第一次学习汇编语言。这是(gdb)反汇编的一部分: mov $0x131,%eax cmp 0x8(%rsp),%eax //Question here, what is the va
有人告诉我,如果我使用 rsp 作为通用寄存器,操作系统可能会将寄存器转储到它在中断时指向的位置,从而导致出现问题的行为。 这是真的吗?如果不是,如果我不需要堆栈,我可以使用 rsp 作为通用寄存器吗
对于我们的一个应用程序,我们在/var/log/messages 中看到了以下提到的几条消息: Sep 18 03:24:23 kernel: application_name[14682] tra
我在 CSharpInteractive.rsp 中看到您可以使用/r 在 GAC 中添加对 DLL 的引用: 如何添加对自己的 DLL 的引用? 我试过 System.Reflection.Asse
让我们采用以下基本 C 函数及其生成的有意未优化的程序集: int main() { int i = 4; return 3; } 它生成以下(未优化的)程序集,这对我来说都很有意义:
我研究了 32 位机器,我知道 sub $12, %esp 与 pop %eax 和 mov $0, %eax 上的三次相同。 但我不知道为什么我们在 x86-64 机器上使用 add $18, %r
下面是我的代码: C代码 // this function might look weird, just for demo purpose void func4(int x, int y, int z
下面是我的代码: C代码 // this function might look weird, just for demo purpose void func4(int x, int y, int z
在汇编中,许多函数以下面的序言开始: 00000001004010e0: main(int, char**)+0 push %rbp 00000001004010e1: main(int,
考虑以下x64 NASM语法程序集: inc qword [rax] inc qword [rcx] inc qword [rdx] inc qword [rbx] inc qword [rsp] i
这个问题是关于 x86 汇编的,但我用 C 提供了一个例子,因为我试图检查 GCC 在做什么。 当我遵循各种汇编指南时,我注意到人们,至少是我阅读过的 Material 中的少数人,似乎习惯于将堆栈变
我是内联汇编的新手。我有以下带有内联汇编的 C 函数。我只是想看看 push %%rbp 和 mov %%rsp, %%rbp 是否实际运行正确。我的功能如下, test_inlineAssembly
我目前正在使用 gcc、gdb 和汇编并试图理解它们。我已经复习了一些教程并掌握了一些关键点。 所以我决定使用一个小的 .c 文件,看了一下结果,有些事情不是很清楚。 这是文件: #include
根据 Intel 在 x64 中的说法,以下寄存器称为通用寄存器(RAX、RBX、RCX、RDX、RBP、RSI、RDI、RSP 和 R8-R15)https://software.intel.com
我是一名优秀的程序员,十分优秀!