Skip to content

Latest commit

 

History

History
61 lines (50 loc) · 4.4 KB

2024-12-27-224413.md

File metadata and controls

61 lines (50 loc) · 4.4 KB

Делаем из emacs интерактивный учебник ассемблера архитектуры x86-64 (amd64)

rmsbolt-simple-example.webm

Пост для my_waifu_was_alien_robot

Первым делом нам понадобится большущий справочник по ассемблеру от компании Intel — Intel Software Development Manual. Находим его в формате pdf на либгене. Ставьте на скачивание и дочитывайте пост, переходим к установкам нужных пакетов.

Я подразумеваю, что у вас уже подключен емаксовый репозиторий пакетов melpa. Если это так, то устанавливаем из него два пакета: rmsbolt и x86-lookup. Это можно сделать вызвав M-x package-install. А можно сразу вписать в конфиг форму с макросом use-package и кейвордом ensure, который подразумевает скачивание пакета при загрузке конфига, если его ещё нет. use-package удобен для того чтобы сразу иметь отдельный, компактный кусочек кода, который будет настраивать отдельно взятый пакет. Теперь поменяем две переменные. Переменная x86-lookup-pdf должна указывать на pdf нашей скачанной книги, а x86-lookup-browse-pdf-function, на функцию, которая откроет программу для чтения pdf.

Это тоже можно сделать через use-package. Но поскольку местоположение pdf'ки и программа, которой я захочу её открыть может меняться от машины к машине, я выбрал вынести эту часть конфига в custom.el, в котором у меня переменные настроенные интерактивно на каждом хосте по своему.

Тем удобнее и для вас, просто поменяйте эти переменные через интерактивный интерфейс M-x customize-variable Чтобы использовать custom также, впишите в конфиг что-то такое:

(setq custom-file (concat user-emacs-directory "custom.el"))
(load custom-file 'noerror)

Пишем программу, запускаем rmsbolt, наводим емаксовый cursor на инструкцию и вызываем M-x x86-lookup. Читаем про инструкцию и разбираемся.

В принципе, всё. Остаётся только добавить, что впервые совет изучать ассемблер компилируя сишный код я услышал у Дениса Юричева, автора книги reverse engineering for beginners. А сейчас написать этот пост меня вдохновило чтение компиляторного учебника Rue Ueyama, ну и на канал я давно ничего более менее развёрнутого не постил. Ах, да, rmsbolt работает не только для исходников на C и C++, но и для Python, emacs lisp, nim, zig, ещё нескольких...

Можно немного поменять команду с компиляции, меняя, в файле локальную переменную rmsbolt-command, аналог привычной compile-command. Пожалуй пока всё.

Ещё один похожий мод, с большим числом функций Cписок альтернатив с ссылкой на godbolt и другие compiler explorer'ы.