Dov*_*iin 10 c++ assembly x86-64
我有一个我已经拆解的C++程序,看起来程序集正在使用指令指针获取字符串文字.例如:
leaq 0x15468(%rip), %rsi ## literal pool for: "special"
Run Code Online (Sandbox Code Playgroud)
和
leaq 0x15457(%rip), %rsi ## literal pool for: "ordinary"
Run Code Online (Sandbox Code Playgroud)
为什么编译器使用指令指针获取字符串文字?这似乎会导致任何人类程序员的头痛,尽管对编译器来说可能并不那么难.
不过,我的问题是为什么?有没有基于机器或历史的原因或编译器编写者是否决定%rip任意使用?
请记住,C++中的字符串文字是常量且不可修改的.确保这一点的一种方法是将它们与代码段中的代码放在一起,代码段被加载到标记为只读的内存页中.
| 归档时间: |
|
| 查看次数: |
240 次 |
| 最近记录: |