![]() |
1
2
寄存器RDI包含数组内存中某个位置的地址。上面这行将RAX寄存器的内容复制到数组的第一个元素中。由于x64中的指针是0x8字节,因此以下两行:
将RDX和RCX寄存器的内容分别复制到数组的第二个和第三个元素中。现在我们需要开始比较这些值,看看需要在哪里交换。
cmp将比较RDX的值和RAX的值(基本上是数组[1]和数组[0])。如果RDX小于或等于RAX,那么这将直接将程序执行跳转到第400a33行。您可以将其视为(array[1]>array[0])。所以它继续比较这些值。
|
![]() |
2
4
|
![]() |
3
4
它有助于用专有名称替换寄存器名称以跟踪数据流,并为控制流添加分支标签。
|
![]() |
Ilya Loskutov · 无法将单词加载到寄存器中 2 年前 |
![]() |
Ari157 · x86_64 Linux程序集中的逻辑与实现 2 年前 |
![]() |
Arya · 汇编语言中的“标签”——操作码 2 年前 |
![]() |
S1mple · 通过gcc生成64位共享库时的“未定义的主引用” 3 年前 |
![]() |
R0M2 · 为什么“GCC”忽略汇编代码的-fno pic 3 年前 |
![]() |
Akagi Akira · 如何在gnu汇编程序中组装MIPS cpu 3 年前 |