Можно ли изменить или получить доступ к счетчику программ?

Читая о счетчике программ, я узнал, что счетчик программ отличается тем, что нет возможности напрямую изменить его значение.

Есть ли какой-либо косвенный способ доступа / изменения содержимого счетчика программ?

2 ответа

Решение

Вы должны понимать, что если вы модифицируете ПК, следующая выполненная инструкция будет выполняться по новому адресу ПК. Это просто безусловный переход, и у всех процессоров есть такая инструкция.

Как правило нет LD PC,addr инструкция, но это именно то, что JMP addr делает, так что это не правда, что вы не можете напрямую изменить его значение. Однако вы не можете изменить его значение без изменения пути выполнения кода - выполнение продолжается с указанного адреса.

В большинстве случаев это можно сделать и косвенно, например, установив указатель стека на местоположение, содержащее новый адрес, и вызвав инструкцию возврата RET.

Различные процессоры и архитектуры могут вести себя по-разному разными способами, и предложенная мной мнемоника инструкций является "общей" и не предназначена для ссылки на какой-либо конкретный набор команд.

Безусловная инструкция перехода напрямую изменяет значение ПК.

Другие вопросы по тегам