2017-01-05 10 views
3

Я начинаю изучать язык Ассамблеи. Я знаком с ним на базовом уровне. Интересно, насколько организовано большое приложение в Ассамблее, то есть как я могу разделить их на модули/пакеты и включить их в другие модули? Я говорю о NASM в частности.Как разбить приложение NASM на модули/пакеты и включить их?

+1

(это сильно смело мнение, поэтому возьмите с солью). Большие приложения для сборки обычно организованы как приложения на C++, используя Assembly только для нескольких наиболее важных частей. С достаточно написанным источником C++ среднее качество созданного машинного кода легко опережает сборку вручную, и несколько критических частей также легче настраивать после того, как компилятор первым их включил. Поэтому не ожидайте найти некоторые очень сложные инструменты для управления большими проектами. На самом деле есть несколько, называемых C, C++, Java, C# и т. Д.;) – Ped7g

+0

@ Ped7g, неверно. – ako25

ответ

3

Вы можете:

  • Использование %include
    Чтобы включить внешний файл в текущий.
    Это можно дополнительно контролировать с помощью переключателя командной строки -i.

    Вы также можете заставить NASM предварительно включить файл с помощью переключателя -p.

  • Соберите несколько файлов
    Поскольку NASM не компоновщик, вы можете воспользоваться возможностью линкера ... ну, ссылка файлы вместе.

    Используйте директиву GLOBAL, чтобы сделать набор символов видимым для других модулей.
    Используйте директиву EXTERN, чтобы импортировать набор символов из других модулей.

    Вы можете передать все объектные файлы в компоновщик.
    NASM (как сегодня) может собирать только один файл за раз, поэтому необходим скрипт сборки.


Два выше не являются взаимоисключающими, но вы должны в основном понять NASM output file formats видеть, когда последний применим.

 Смежные вопросы

  • Нет связанных вопросов^_^