Как создать просмотр списка с неопределенным количеством элементов - PullRequest
0 голосов
/ 25 ноября 2018

Как создать список с неопределенным (или переменным) количеством элементов?

Я разрабатываю дизассемблер, который поддерживает 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:
       ...
}
...