Компилятор должен выводить объектный файл из источника. Это зависит от архитектуры, такой как доступность режима адресации, доступные регистры и такие, которые разъясняются в ABI. Кроме того, ОС тесно связана с архитектурой из соображений производительности, поэтому, если вы не пишете микропрограмму, соглашение о вызовах ОС для системных вызовов и любые другие подобные подробности являются частью пакета ABI.
Компилятор заменяет исходный текст высокого уровня на коды операций и данные машинного уровня. Выходные данные должны соответствовать в зависимости от цепочки инструментов. Например, для линкера, ориентированного на Windows, потребуется объектный файл в формате PE для поддержки библиотек Windows и дополнительные форматы, если компилятор в цепочке инструментов выводит один из этих других форматов, таких как ELF.