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'ы.