Работа с GNU Assembler, Emacs и DDD

1. Редактирование исходного кода программы

Для набора и редактирования исходного кода программы рекомендуется использовать редактор emacs. Стандартный суффикс имени файла ассемблера – ".S".

Инструкции по работе с emacs доступны на странице курса Информатика.

2. Компиляция программы

Для получения выполняемого файла необходимо выполнить две команды (program - название программы):

  1. Компиляция файла ассемблера в объектный файл:
    as -gstabs+ -ahlsm=program.S.lst -o program.o program.S
  2. Редактирование связей:
    ld -o program program.o

Для выполнения указанных команд компиляции из emacs, выберите меню "Tools/Compile", введите команду и нажмите Enter. В нижней части окна emacs появится буфер с результатами компиляции (сообщение об успешном выполнении или список ошибок).

Для автоматизации процесса компиляции можно использовать утилиту make. Для этого нужно создать файл с именем "Makefile":

program: program.o
<TAB><TAB>ld -o program program.o

program.o: program.S
<TAB><TAB>as -gstabs+ -ahlsm=program.S.lst -o program.o program.S

Теперь компиляцию и редактирование связей можно запустить одной командой make.

3. Отладка программы

Для отладки используйте программу ddd, которая предоставляет графический интерфейс к отладчику gdb.

Запуск:

ddd program

program - имя выполняемого файла отлаживаемой программы. Перед запуском отладчика программа должна быть откомпилирована.

Примерный сеанс работы в отладчике:

  1. Установите точку останова на одну из строк кода программы: двойной щелчок в начале нужной строки кода в окне ddd.
  2. Запустите программу: кнопка "Run" в панели инструментов ddd.
  3. Выведите текущее значение переменной: двойной щелчок по имени переменной.
  4. Посмотрите значения регистров процессора: меню "Status/Registers".
  5. Выполняйте программу по шагам: кнопка "Step" в панели инструментов. Наблюдайте за изменениями значений регистров и переменных.
  6. Продолжите выполнение программы до завершения: кнопка "Cont".
  7. Завершите работу отладчика.

Подробная документация по ddd