Откройте папку проекта
Выберите рабочую папку, где лежат ваш исходный код на C, копия скомпилированного файла и, позже, экспортированный листинг.
Выберите одну небольшую функцию из программы на C, которую вы скомпилировали сами, и изучите её от первой инструкции до завершающего return. Законы и условия лицензий различаются в зависимости от страны, поэтому используйте только собственный код или учебные файлы. Ниже четыре шага.
Выберите рабочую папку, где лежат ваш исходный код на C, копия скомпилированного файла и, позже, экспортированный листинг.
Пусть Shell запустит команду экспорта вашего дизассемблера на копии, или сохраните листинг сами, чтобы результатом был текстовый файл.
Попросите агента прочитать листинг и объяснить функцию строка за строкой, затем сохраните заметки через write_file.
Сравните заметки со своим исходным кодом и листингом, прочитайте diff в Ask first и проверьте результат в лаборатории, если это законно.
add_numbers.asmтекст прочитанedx add_numbers.asm2 совпаденияnotes/add_numbers.mdсохраненоnotes/add_numbers.md+4 строки; add_numbers.asm - teaching listing, x64 Windows
; Returns the sum of its first two integer arguments.
; Argument 1 arrives in ecx (low half of rcx).
; Argument 2 arrives in edx (low half of rdx).
add_numbers:
mov eax, ecx ; copy argument 1 into eax
add eax, edx ; add argument 2, the sum stays in eax
ret ; return to the caller, result in eaxЭта функция складывает два целых числа. По соглашению Windows x64 аргументы приходят в ecx и edx, сумма формируется в eax, а ret возвращает управление вызывающему коду.
Частый вопрос новичков — как начать с ассемблера, и ответ — с функции, которую вы написали сами. Напишите короткую функцию на C, скомпилируйте её и экспортируйте листинг как текст. read_file открывает листинг, а агент объясняет каждую инструкцию: какой регистр хранит какой аргумент, что делает стек и куда возвращается результат. write_file сохраняет эти объяснения в notes/begin.md. В Plan only агент сначала перечисляет эти шаги. Пока ничего не запускается. Затем переключитесь на Ask first и читайте diff перед каждым сохранением. В конце сравните заметки со своим кодом и, если это законно, проверьте скомпилированную функцию в лаборатории.
Хорошее упражнение по реверс-инжинирингу API — перечислить функции, которые открывает ваша собственная библиотека, и записать, что делает каждый аргумент. Сохраните как текст список импортируемых и экспортируемых функций из вашего собственного инструмента, затем агент с помощью grep найдёт каждый вызов одной функции, а через read_file откроет строки вокруг него. Он составит таблицу в notes/api.md, а edit_file покажет каждое изменение как diff. Начните с одной функции. Тот же метод помогает восстановить, как работал ваш собственный старый код. Агент может ошибиться в типе или назначении, поэтому перед принятием сравните каждую строку со своим исходным кодом и собственным тестом.