Изучаем Ассемблер: Вспоминаем основы информатики
• Я решил начать цикл постов про Ассемблер, так как умение как минимум читать и понимать код на нем может быть крайне важно как для обычных программистов, так и для кибербезопасников, которые к примеру изучают реверсинг. Сегодня я хочу быстренько пробежаться по базе, которую вы должны были получить в школе.
• Бит (bit) — минимальная единица измерения информации. Имеет всего 2 состояния, к примеру 0 и 1.
• Биты используются во всех современных устройствах, так как представление бита со своими простыми двумя состояниями очень удобно, к примеру есть сигнал/нет сигнала. Эти простые состояния позволяют легко создавать логические схемы.
• Битовое поле (bit field) — комбинация битов, позволяет формировать объекты с длинной, не кратной байту. К примеру битовое поле из 2 битов предоставляет 4 значения:
00 01 10 11.• Байт (byte) — битовое поле из 8 бит. Имеет 256 значений.
• Ассемблер — низкоуровневый язык программирования, каждая команда которого соответствует одной или нескольким машинным инструкциям, которые выполняются только процессором. Мы будем изучать только x64 команды.
• Процессор может выполнять команды, позволяющие оперировать числами, внутри небольшого количества ячеек памяти, которые называются регистрами.
• Регистры — это небольшие, но очень быстрые ячейки памяти, встроенные в процессор. Они используются для хранения данных, адресов и промежуточных результатов вычислений. Количество и размер регистров зависят от архитектуры процессора. Регистров крайне мало и потому у каждого из них есть свое имя, к примеру
RAX, RBX, RDI и так далее.• Для взаимодействия с устройствами процессор использует 3 модуля:
• Контроллер прерываний (Interrupt Controller): Аппаратный компонент, который управляет прерываниями, поступающими от внешних устройств.
• Системная шина (System Bus): Набор проводников, которые соединяют процессор с другими компонентами компьютера.
• Оперативная память (Random Access Memory, RAM): Энергозависимая память, которая используется для временного хранения данных и инструкций, с которыми процессор работает в текущий момент.
• Программа — последовательность машинных команд, которые выполняет процессор.
• Под памятью мы подразумеваем только RAM, но никак не диски. HDD и SSD — это устройства хранения данных, ОЗУ — память компьютера.
• Кэш — сверх быстрая память, которая применяется для хранения копий данных.
• Это был краткий ликбез по основам информатики, эта информация нам нужна, чтобы лучше понимать, что вообще будет происходить. Удачи!
• Поддержать автора монеткой: @v_meshke
