@Haaaaz

Регистры общего назначения могут иметь несколько значений?

Здравствуйте, я пока изучаю только теорию по Ассемблеру, но мне уже не понятен один момент:
У процессора есть регистры общего назначения, которые мы можем использовать в ассемблерном коде. Но ведь по мимо нашей программы в системе могут работать и другие программы на ассемблере и использовать такие же регистры, как и мы.
Каким образом две программы используют один регистр? Или он может содержать в себе несколько значений?
  • Вопрос задан
  • 83 просмотра
Решения вопроса 4
freeExec
@freeExec
Участник OpenStreetMap
В один момент времени "условно только одна программа" работает.
Ответ написан
Комментировать
saboteur_kiev
@saboteur_kiev
software engineer
Многозадачность обеспечивает операционная система, а не процессор.
На ядро операционной системы и ложится "переключение процессов".
С точки зрения архитектуры процессора - нет никаких "процессов", есть просто выполняющийся код.
Ответ написан
Комментировать
Ocelot
@Ocelot
При переключении контекста значения регистров нужно где-нибудь сохранить (например, в стеке), а при обратном переключении - загрузить обратно. Это происходит при вызове функций, входе в обработчики прерываний, переключении на другой процесс/поток и т.д.
Ответ написан
Комментировать
fox_12
@fox_12
Расставляю биты, управляю заряженными частицами
При выполнении какой-либо подпрограммы происходит что-то подобное:

push eax # сохраняем регистр
...      # делаем какие-то вычисления с регистром
pop eax  # восстанавливаем регистр

таким образом при выходе из подпрограммы в регистре будет предыдущее значение
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы