了解objdump反汇编告诉我的是什么

时间:2016-05-19 22:56:34

标签: assembly x86-64 objdump

我正在调试我写的驱动程序中的问题。我为此提供的内核核心文件在uart_remove_one_port中显示了一个问题,它是serial_core.c中的一个函数(即内核的一部分)。我在objdump -d -S文件上运行了vmlinux,用于内核我正在运行以更好地查看此内容。我有以下内容:

ffffffff813cce60:   48 8b 83 c8 00 00 00    mov    0xc8(%rbx),%rax
ffffffff813cce67:   48 89 df                mov    %rbx,%rdi
ffffffff813cce6a:   ff 90 98 00 00 00       callq  *0x98(%rax)

我对callq指令正在做什么感到有点困惑。 callq *0x98(%rax),似乎在x86_64 stuff as mentioned here中使用了一些表达式。但是,我不确定&#39; *&#39;人物做到了。我也没有找到足够的答案。它是间接,因为我在C int *p = <something_real>; *p = 5;中使用它还是在增加某些东西?我相信这条指令mov 0xc8(%rbx),%rax意味着&#34;将0xc8添加到rbx寄存器并将结果推送到rax。&#34;借鉴这个,这是另一条指令说,&#34;将0x98添加到rax然后通过调用该函数取消引用?&#34;

0 个答案:

没有答案