Как создать список с неопределенным (или переменным) количеством элементов?
Я разрабатываю дизассемблер, который поддерживает x86, arm и т. Д. Он показывает разборку в виде списка.Он правильно поддерживает статический анализ.Но я хочу добавить функцию «перейти к любому адресу» для архитектуры x86.
При отображении разборки RISC-арки в виде списка количество элементов вполне измеримо и фиксировано, поскольку его инструкции имеют фиксированный размер (4 байта).каждая).
В случае архитектур RISC, таких как ARM, разборка обычно не меняется, даже если программа скачет.Однако в случае архитектур CISC, таких как x86, когда программа переходит внутрь инструкции, полная разборка изменяется.И, конечно, количество инструкций (== количество элементов списка просмотра) тоже!
Я пытался реализовать что-то вроде таблицы индекса и использовать фиксированный размер (300) списка просмотра.
DisasmResult[] disasmTable;
int [] indexofTable;//position->index table. Pre generate it when user jumps or scrolls the listview to the bottom.
public View getView(position)
{
return createView(disasmTable[indexofTable[position]]);
}
Подробные объяснения (в поисках лучших примеров)
void confuseReverser()
{
_asm{
mov eax, 0
cmp eax, 0
je gogo
emit 0xeb
gogo:
...
}