Q
MOVQ装配功能
14
A
回答
21
movq
(假设你在谈论86)是一个四字的举动(64-位值)。这个特殊的指令:
movq (%rsp), %rsp
看起来非常像代码,将走过堆栈帧。这个特定的指令捕获当前堆栈指针所指向的四字,并将其加载到堆栈指针中,并覆盖它。
通过示例的方式,该代码序列(基于真实代码,并在英特尔宁可AT &Ť格式)超越它是0。
将不断从加载其内容的堆栈指针,直到该值的16个字节576 cmpq [rsp+0x10],0x0
582 jz 594
588 movq rsp,[rsp]
592 jmp 576
594 ...
它可能不是堆栈帧行走代码,但它是不寻常的,因为它会为通常不用的东西堆栈指针。
它是不寻常的是,向上移动堆栈帧通常涉及堆栈指针和基址指针,但通常只是向上一级(即从函数返回)。
对于上面想要向上移动多个层次的代码,使用堆栈指针可能会更快,直到您到达需要的位置,然后关闭基本指针(常常调用约定在改变它之前推动当前的基本指针,这样一个简单的弹出将恢复旧值)。
9
这是一个64位值mov。它的64位因为movq中的“q”是四和四位,所以它是64位。
可以有其他例子,例如movl,其中l是32位。
但在MOVQ(%RSP),%RSP使用ATT的语法的情况下..
的MOVQ(%RSP),%RSP - > MOVQ被称为操作码,(%RSP)被称为源极或src和%rsp被称为目的地或dst。
它的作用是在寄存器中查找%rsp获取其值并进入内存[括号“()”表示进入内存值],然后将其分配给%rsp。
虽然两者都是相同的寄存器,不同之处在于%rsp的值发生了变化。
EG:让我们说%RSP具有值22,但是%RSP的存储器是30
使用该指令MOVQ(%RSP),%RSP
%RSP的新值是30再次因为(%rsp)获取了%rsp的值(假设为22),然后(%rsp)进入内存值30,然后将其分配给目标上的%rsp,即%rsp本身。
相关问题
- 1. 装配功能流
- 2. 装配功能基础?
- 3. 分配功能
- 4. 包装jQuery功能
- 5. Variadic功能包装
- 6. 射配对功能
- 7. 功能NHibernate配置
- 8. 装饰两个功能?
- 9. highcharts包装功能'拖'
- 10. 装饰功能转到
- 11. 级联功能和装饰
- 12. 字体已安装?功能
- 13. 手动安装Emacs功能
- 14. js中的功能吊装
- 15. 包装到硬件功能
- 16. 包装可变功能
- 17. movq指令中的段错误?
- 18. 无法从装配创建功能接收对象/ FileNotFound
- 19. PowerShell的DSC配置:选择安装Windows功能
- 20. 装配 - 交换功能 - 为什么它不起作用?
- 21. 配置使用功能NHibernate
- 22. 不匹配功能错误
- 23. 功能配置mootools.floor不行
- 24. 模式匹配上功能
- 25. 在索引/匹配功能
- 26. MySQL配置的功能NHibernate
- 27. 分配值数组功能
- 28. 功能匹配难度
- 29. 如何匹配功能?
- 30. VBA匹配功能与ActiveSheet
这当然是64位的,因为RSP寄存器只存在于64位(在IA32体系结构上,我不记得使用RSP的另一种体系结构)。它的目的分析听起来也很合理。 – Zooba 2010-10-04 05:32:37