为什么我的拆卸C 代码使用指令指针和偏移来获取字符串文字
Why does my disassembled C++ code use the instruction pointer and an offset to get string literals?
我有一个我已经拆卸的我的C 程序,而且似乎组件似乎正在使用指令指针来获得字符串文字。例如:
leaq 0x15468(%rip), %rsi ## literal pool for: "special"
和
leaq 0x15457(%rip), %rsi ## literal pool for: "ordinary"
为什么编译器使用指令指针来获得字符串文字?对于任何人类程序员来说,这似乎会导致令人头疼的头痛,尽管对于编译器来说可能并不难。
我的问题是为什么?是否有一些基于机器或历史原因,或者编译器作家只是决定任意使用%rip
?
请记住,C 中的字符串文字为常数和不可模拟。确保将它们与代码段中的代码放在一起的一种方法,该代码将其加载到标记为仅读取的内存页面中。
相关文章:
- C++为构建时间获取QDateTime的可靠方法
- lambda参数转换为constexpr技巧,然后获取带链接的数组
- 如何使用 < 和 > 命令获取 c++ 中的输入和输出?
- 使用指针从C++中的数组中获取最大值
- 如何获取std::result_of函数的返回类型
- 如何在openssl-ecc中获取十六进制格式的私钥
- 使用Unreal C++获取VR耳机的世界位置/方向
- 获取日期异步信号安全吗?如果在信号处理程序中使用,它会导致死锁吗
- 从C字符串中获取奇怪的字符串长度
- 为什么我的for循环不能正确获取argv
- constexpr 函数中的非文字(通过 std::is_constant_evaluated)
- 从python中调用C++函数并获取返回值
- 如何获取一个数字的前3位
- 我可以使用条件运算符初始化C风格的字符串文字吗
- 为什么我的拆卸C 代码使用指令指针和偏移来获取字符串文字
- 尝试编写进程内存并获取用户定义的文字运算符未找到
- C 便携式方法获取u8字符串文字的值表示
- 如何在LLVM IR中获取字符串文字的值
- 有没有一种方法可以从GCC中获取字符串文字
- 获取字符串文字的字符长度