Мне интересно, есть ли что-либо на уровне сборки в x86-64, которое позволяет вам спать / wait , так что никакие инструкции не выполняются, пока не будет выполнено ожидание.Я видел инструкции WAIT и PAUSE, но я не уверен, что они связаны между собой.
Я мог бы представить это так:
start:
wait 123, oninterrupt ; 123 milliseconds
; then it will go here after that time
oninterrupt:
; ctrl-c pressed, now exit
Аналогично, мне интересно, есть липерехватчики событий / обработчики в x86.Поэтому, если кто-то нажмет CTRL + C, будет событие прерывания, отправленное куда-то в сборку, и вы можете запустить свой код «выхода» для этого.Я бы предположил, что обработчик событий может быть написан на ассемблере x86 следующим образом:
start:
int 10, onctrlc ; register handler for made up event
; ... more instructions evaluate right after
onctrlc:
; control+c pressed, now exit
Но я не просто думаю о CTRL + C, но о любом событии (о котором я не так уж много знаю).Я видел эту крошечную библиотеку цикла обработки событий в C , не уверенную, можно ли что-то из этого сделать с помощью простой инструкции по сборке.Такие вещи, как события клавиатуры, события сокетов, события файлов, другие события, я не уверен, какими они будут.
Кроме того, это будет запускаться как обычный пользователь в операционной системе.Но знать, как это сделать для привилегированных пользователей, было бы неплохо узнать.А также не имеет отношения к тому, как вы можете сделать это с помощью функций или системных вызовов Linux, пока я понимаю, как это сделать до сих пор.