Size: a a a

2020 January 09

AZ

Alex Zhukovsky in rust_offtopic
что там с прерываниями и %rsp не готов сказать, мне хватает более высокоуровневого понимания
источник

AZ

Alex Zhukovsky in rust_offtopic
iret берет значение из стека
источник

AZ

Alex Zhukovsky in rust_offtopic
первым аргументом любой функции кладется адрес возврата
источник

AZ

Alex Zhukovsky in rust_offtopic
источник

AZ

Alex Zhukovsky in rust_offtopic
Вот картинка
источник

P

Pavel in rust_offtopic
Alex Zhukovsky
iret берет значение из стека
у iret другой стек
источник

AZ

Alex Zhukovsky in rust_offtopic
почитай, там все написано
источник

P

Pavel in rust_offtopic
соответственно там друго %rsp и %rpb
источник

RP

Roman Proskuryakov in rust_offtopic
Pavel
ну, я про то, что %rsp он один как бы, вот тебе пришло прерывание у тебя теперь стекфрейм обработчика прерывания, куда делось старое значение  %rsp? откуда iret  знает, какое проставить?
сохраняется операционной системой в контекст
источник

P

Pavel in rust_offtopic
Roman Proskuryakov
сохраняется операционной системой в контекст
даже если это железное прерывание?
источник

RP

Roman Proskuryakov in rust_offtopic
потом когда прерывание завершается (или сисколл), ОС восстанавливает контекст и стек
источник

P

Pavel in rust_offtopic
Roman Proskuryakov
потом когда прерывание завершается (или сисколл), ОС восстанавливает контекст и стек
ну, сискол — програмное прерывание, тут можно обработать и записать в контекст, а вот с железным я до сих пор не понимаю
источник

S

Sergey in rust_offtopic
аппаратные прерывания кто по твоему обрабатывает?
источник

RP

Roman Proskuryakov in rust_offtopic
Pavel
ну, сискол — програмное прерывание, тут можно обработать и записать в контекст, а вот с железным я до сих пор не понимаю
https://www.best-microcontroller-projects.com/hardware-interrupt.html

там тоже есть механизм восстановления / сохранения
источник

S

Sergey in rust_offtopic
Sergey
аппаратные прерывания кто по твоему обрабатывает?
ты CPU говоришь, где лежит у тебя таблица обработчиков прерываний
источник

S

Sergey in rust_offtopic
и он дергает функцию из этой таблички
источник

S

Sergey in rust_offtopic
ну в x86 так по крайней мере
источник

RP

Roman Proskuryakov in rust_offtopic
Pavel
ну, сискол — програмное прерывание, тут можно обработать и записать в контекст, а вот с железным я до сих пор не понимаю
источник

P

Pavel in rust_offtopic
ну типа... я знаю, что небо синее, а почему?
источник

P

Pavel in rust_offtopic
Sergey
ты CPU говоришь, где лежит у тебя таблица обработчиков прерываний
таблица в памяти лежит, а не в цпу
источник