小编The*_*ion的帖子

需要帮助理解 FF 间接调用指令 x86

我正在尝试重新编码一个简单的 ftrace,但我无法理解像这样的 FF 间接调用:

ff 15 76 0b 20 00       callq  *0x200b76(%rip)        # 600ff0 <__libc_start_main@GLIBC_2.2.5>
Run Code Online (Sandbox Code Playgroud)

它是否像带有偏移量的 E8 指令一样工作?如果没有,如何找到呼叫指向的地址?那个电话的返回地址?

x86 assembly intel

4
推荐指数
1
解决办法
3011
查看次数

在C中存储常量数据的最佳方法

假设我正在制作一个C程序,当用户输入宝石的名字时,该程序会显示有关宝石的信息.

石头名称永远不会改变,并且只有不到20个,所以在运行时从外部文件读取它们似乎有点矫枉过正.

我还需要从多个文件中访问这些名称(比方说两个).

我通常做的是我声明一个全局char*数组,如下所示:

char *g_rsc_names[] = {"linemate", "deraumere", "sibur", "mendiane", "phiras", "thystane"};  
Run Code Online (Sandbox Code Playgroud)

在文件中我需要使用它们.这看起来很好,但这只允许我访问我声明这个全局数组的文件中的名称.

在这种情况下,存储石头名称的最佳/最干净的方法是什么?

c string

-2
推荐指数
1
解决办法
172
查看次数

标签 统计

assembly ×1

c ×1

intel ×1

string ×1

x86 ×1