Відкрийте теку проєкту
Виберіть робочу теку з вашим кодом на 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. Почніть з однієї функції. Той самий метод допомагає відновити, як працював ваш власний старий код. Агент може помилитися щодо типу чи призначення, тож порівняйте кожен рядок із вашим кодом і власним тестом, перш ніж прийняти його.