дык вопрос то был не в том, проще или не проще ;-) (см. пост номер 1)
не обязательно :) тут
не все так сложно :)
table: dd address1, address2, address3 ... call dword [table + eax * 4]
alutov тут также можешь глянуть эту тему ASL-компилятор и AML-интерпретатор от Intel тут
значит да
katrus ну если так, то idt_change: pushfd cli xchg ebx, dword [eax] xchg edx, dword [eax + 4] popfd ret...
katrus ты по дескриптору IDT не определишь, обработчик какого прерывания через него будет вызываться
тут надо не IDT смотреть, а APIC, потому как прерывание внешнее IDT кроме адресов обработчиков ничего не даст
да не в чем, это просто было утверждение
адреса 0x80000000-0xFFFFFFFF а в адресном пространстве процесса потому как адрес функции, который мы кладем в MSR EIP < 0x80000000
offtop вообще интересная дискуссия получается :)
все, насчет адресов стеков ядра решение нашел в исходниках Linux :) sysenter_entry: mov esp, dword [esp + TSS_sysenter_esp0] ... видно есть...
ну как, смотри если ESP в соответствующем MSR не меняется, то как мы узнаем адрес стека ядра потока после sysenter? нет, если в нем ничего важного...
гы, если задачу решать в общем случае, такой вариант не пойдет, ну то есть где брать селектор даже если он фиксирован? :) я не это имею в виду...
+ как мы узнаем адрес стека ядра текущего потока? Или при переключении потоков меняется MSR для ESP? да, еще один вопрос, в стеке ядра потока...
однако FS автоматом при sysenter не меняется поэтому еще нужно знать значение соответствующего селектора :)
ну код то будет работать в адресном пространстве процесса, а не ядра и все адреса функций придется искать вручную или нет? (я просто не очень...
Great надеюсь нужны привилегия администратора? ;-)
Имена участников (разделяйте запятой).