0
A
回答
2
这只是间接跳过表格。正如你所希望的那样,.L4(,%rdx,8)
是一个内存地址,其值为.L4 + rdx * 8
。在64位模式下,指针是8个字节,因此是比例因子。 rdx
只是表中条目的索引。
的*
没有任何区别,除了:)你应该使用间接跳转一个*
沉默汇编警告,但是当汇编能弄清楚,它只是给一个警告。 (,%rdx,8)
是一个不争的事实,这是一个间接的跳跃。如果您有jmp *.L4
,则需要*
将其与jmp .L4
区分开来。前者是通过.L4
处的指针间接跳转,而后者则是直接跳转到.L4
。
相关问题
- 1. 解释GDB寄存器(SSE寄存器)
- 2. 大会部分寄存器
- 3. 跳转后寄存器和变量未保存状态
- 4. 解释ISL12022的i2c寄存器映射
- 5. 跳转和链接寄存器MIPS
- 6. 如何解释x86-64上的段寄存器访问?
- 7. 与寄存器
- 8. VB.net寄存器键,在标签出
- 9. 大会EAX寄存器没有道理
- 10. 如何在寄存器中移动标签的地址
- 11. 大会,依靠寄存器与变量的效率?
- 12. 大会:与32位寄存器的64位乘法
- 13. 如何跳转到指定的标签的多标签让与jQuery工具
- 14. Matlab文本模式下标轴标签太大(LaTeX解释器)
- 15. 如何理解和更改bochsdbg中的CPU寄存器标志?
- 16. 如何切换跳转标签
- 17. 目的条件跳转的归零寄存器
- 18. mmap()中的PROT标志如何转换为寄存器值?
- 19. 跳入寄存器也升级到MacOS Sierra后跳到默认的一个
- 20. x86汇编寄存器和mov指令,并跳转抵消
- 21. 实现寄存器跳转控制,单周期MIPS
- 22. 在CPU寄存器中分配寄存器变量的标准?
- 23. 解引用寄存器gdb
- 24. NERDTree跳转到标签号
- 25. 机器人解释脚本标签
- 26. 心跳解释
- 27. GDB寄存器与处理器寄存器不同吗?
- 28. 如何跳过XML标签?
- 29. 使用SAX解析器解析大型XML文件(跳过一些行/标签)
- 30. PHP Mysql最大寄存器大小?
感谢您的回答。我现在的问题是你如何计算.L4 + rdx * 8?我很困惑,因为.L4是一个标签,添加标签是如何工作的?我还应该补充说明.L4保留的是一些(.quad.L2)指令(L2-L7)。我如何知道间接跳转的标签? – skob002
正如我所说,'rdx'是索引。如果您知道'rdx'中的值,您只需知道它将使用哪个标签。如果'rdx'是'0',它会转到第一个标签,如果它是'5',它将转到第六个标签等。 – Jester
@ skob002:所有标签都有一个地址。 –