Знакомство с операндами и регистрами

Степень завершённости урока: 20%   

Статистика урока:

В прошлых уроках мы познакомились с ассемблерными инструкциями, а также впервые узнали о существовании неких таинственных регистров. Напомню, что ассемблерные инструкции начинаются со слов ADD, CALL, CMP, JE, JMP, LEA, MOV, POP, PUSH и выполняют определённые задачи (операции) над операндами.



Что же такое операнд? Представим, что у нас есть турист, который собирается поехать на курорт. Он может полететь на самолёте (одна инструкция), на поезде (вторая инструкция), на лощади (третья инструкция) и пешком (четвёртая инструкция).

Часть пути (от А до К) турист проедет на поезде, следующую часть пути (от К до Ф) на самолёте, а оставшуюся часть пути (от Ф до Я) на лошади. По мере приближения к финальному пункту назначения турист будет отмерять оставшееся время и количество денег, которое у него остаётся после покупки билетов на самолёт, поезд и лошадь. Время поездки и конкретное место прибытия, модель самолёта, место в поезде и порода лошади, оставшиеся деньги и т.д. - всё это относится к операндам.

Подведу промежуточный итог. Существует определённое количество ассемблерных инструкций, каждая из которых выполняет определённую задачу (более подробно поговорим об этом в следующих уроках). Существуют также операнды, которые производят пока непонятные для нас операции с информацией (подробнее об этом в следующих уроках). На снимке ниже для лёгкого запоминания блок инструкций выделен красным цветом, синим - блок операндов.



Что же такое регистры? На снимке ниже выделен блок регистров в интерфейсе программы-отладчика Ollydbg 2.01.



Проиллюстрирую работу регистров примером из жизни. Представьте, что у вас в руке сотовый телефон, а рядом находится источник Wi-Fi-сигнала. Если вы отойдёте на несколько метров, то качество сигнала ухудшится. Из-за этого упадёт скорость интернета и на загрузку тех же самых веб-страниц будет уходить в несколько раз больше времени. Как это исправить? Правильно, подойти ближе к источнику сигнала.

Давайте перенесём пример из жизни на работу регистров. Итак, регистры это области памяти в центральном процессоре. В предыдущем уроке я упоминал, что после запуска любая программа загружается в (оперативную) память компьютера. В процессе работы центральный процессор и оперативная память обмениваются большим объёмом информации. Канал, соединяющий центральный процессор и оперативную память, имеет ограничения в скорости передачи данных. Т.е. процессор какую-то часть времени бездействует, ожидая отклика оперативной памяти. Почему бы не использовать для этой цели регистры? Расстояние между центральным процессором и регистрами гораздо меньше (регистры - часть центрального процессора, который сам по себе не является монолитным, его конструкция очень сложная), а значит информация передаётся гораздо быстрее.

Визуально соотношение центрального процессора, регистров и оперативной памяти можно представить в таком виде:



Итогом сегодняшнего урока стало знакомство со связкой "инструкции-операнды-регистры". Теперь мы в общих чертах представляем себе путь прохождения информации от программы к центральному процессору, регистрам и оперативной памяти. В следующих уроках продолжу детальное знакомство с искусством взлома программного обеспечения.

            

Страница обновлена 26 июня 2022 года.