GNU Assembler x64. Компоновщик gcc

preview_player
Показать описание
Команду gcc можно использовать для:
- трансляции кода с языка Си на язык ассемблера
- ассемблирования (трансляции ассемблера в машинный код)
- компоновки

Компоновщик gcc имеет следующие особенности:
- Компоновщик gcc "под капотом" использует компоновщик ld
- Компоновщик gcc создаёт каркас программы, в котором создаётся функция _start, а внутри функции _start имеется вызов функции main, которая играет роль основной.
- Компоновщик gcc автоматически подгружает файлы стандартной библиотеки языка Си
- Компоновщик gcc по умолчанию генерирует позиционно-независимый код. Отменить это поведение можно с помощью параметра -no-pie.
Рекомендации по теме
Комментарии
Автор

Большое спасибо за видео. Теперь мне стало понятно, каким образом вызывается функция main языка Си из главной программы на ассемблере. 👍💪🙂

pavelgushchin
Автор

Подскажите, пожалуйста чем может быть вызвано сообщение - Segmentation fault (core dumped) после добавление в код строк:
.section .rodata
str: ascii "text\n"
...
создание объектного файла и компиляция проходят без ошибок. Сообщение выводится на этапе запуска файла???

name_surname-eodz
Автор

У меня почему-то при вызове call puts происходит Ошибка сегментации

Program received signal SIGSEGV, Segmentation fault.
in main ()

Holling_Woodwood
welcome to shbcf.ru