Есть вопрос по сплайсингу

Тема в разделе "WASM.BEGINNERS", создана пользователем SZ, 19 авг 2010.

Статус темы:
Закрыта.
  1. max7C4

    max7C4 New Member

    Публикаций:
    0
    Регистрация:
    17 мар 2008
    Сообщения:
    1.203
    izl3sa
    if (!hMod) hMod=LoadLibrary("WS2_32.DLL");
    иначе тоже будет грустно периодически продолжаться
    SZ
    А лучше вообще оставьте только hMod=LoadLibrary("WS2_32.DLL"); без GetModuleHandle
     
  2. izl3sa

    izl3sa New Member

    Публикаций:
    0
    Регистрация:
    22 апр 2010
    Сообщения:
    164
    Адрес:
    Spb
    2max7C4
    это да =) ошибся немного.
     
  3. Clerk

    Clerk Забанен

    Публикаций:
    0
    Регистрация:
    4 янв 2008
    Сообщения:
    6.689
    Адрес:
    РБ, Могилёв
    SZ
    o Диспетчер исключений получает инфу об исключении, такую как адрес к которому произошло обращение, адрес инструкции вызвавшей обращение, тип доступа(Read/Write).
    o Ядро возвращает статус, однозначно определяющий результат исполнения сервиса.
    o В отладчике имеются кнопки для выполнения трассировки(F7 etc.) и он нормально показывает содержимое памяти и регистры.
     
  4. SZ

    SZ New Member

    Публикаций:
    0
    Регистрация:
    19 авг 2010
    Сообщения:
    30
    Ещё вот хочу уточнить, если:
    jmp 1000+10 ; следует понимать как, переход на адрес 1010
    jmp [1000+10] ; , переход по адресу содержащемуся в 1010
    тогда, логично предположить, что:
    jmp [1000]+10 ; переход по адресу содержащемуся в 1000 с добавлением к этому адресу +10
    но практике получается второе, т.е. записи
    jmp [1000+10] <===> jmp [1000]+10 ; идентичны
    а как правильно прибавить смещение ?
     
  5. l_inc

    l_inc New Member

    Публикаций:
    0
    Регистрация:
    29 сен 2005
    Сообщения:
    2.566
    SZ
    Нет такой адресации. Собственно, jmp 1000+10 (как и jmp [1000+10]) тоже нет: инструкция на стадии компиляции преобразуется сразу в jmp 1010 (jmp [1010]).
    Т.к. jmp [1000]+10 на стадии компиляции разрулить нельзя (неизвестно, что будет находиться по адресу 1000), а процессор такую адресацию не допускает, одной инструкцией такой прыжок не совершить. Минимум двумя:

    add dword[1000],10
    jmp dword[1000]

    И то с побочным эффектом изменения содержимого памяти. А без побочного эффекта — только тремя.
     
  6. SZ

    SZ New Member

    Публикаций:
    0
    Регистрация:
    19 авг 2010
    Сообщения:
    30
    Ну к компилятору вопросов нет, яж это вставляю в
    __asm
    {
    }
    кста а как лучше _asm или __asm, т.е. 1 поджопник или 2 ? =)
    а вот то что "процессор такую адресацию не допускает", не знал.

    тогда буду доопределять новые адреса с учётом смещения
    DWORD a=1000;
    DWORD b=a+10;

    jmp
     
  7. Clerk

    Clerk Забанен

    Публикаций:
    0
    Регистрация:
    4 янв 2008
    Сообщения:
    6.689
    Адрес:
    РБ, Могилёв
    Кто есчо создаст топик про патчи, формат инструкций(в частности ветвлений) получит набор ножей.
     
Статус темы:
Закрыта.