Я новичок в Си и ассемблере, который сейчас работает над проектом сборки.Тем не менее, я столкнулся с некоторой проблемой с инструкцией косвенного перехода.
Строка инструкции jmp:
4006a6: ff 24 c5 50 08 40 00 jmpq *0x400850(,%rax,8)
Когда я перехожу к 400850, строка:
400850: ad lods %ds:(%rsi),%eax
400851: 06 (bad)
400852: 40 00 00 add %al,(%rax)
400855: 00 00 add %al,(%rax)
400857: 00 b3 06 40 00 00 add %dh,0x4006(%rbx)
40085d: 00 00 add %al,(%rax)
40085f: 00 bc 06 40 00 00 00 add %bh,0x40(%rsi,%rax,1)
Основываясь на том, что я узнал, я должен посмотреть на адрес, который хранится в 400850 + 8 * rax, и перейти к этому адресу, чтобы увидеть инструкцию и выполнить определенную операцию.Например, если rax = 1, я должен посмотреть на адрес, хранящийся в 400858, но я не могу найти 400858, и я также не знаю, что означает значение, такое как «ab», это адрес?
Кстати, я полагаю, что этот косвенный скачок представляет собой условие переключения в коде C.