|
443 / 74 / 7
Регистрация: 29.01.2018
Сообщений: 1,274
|
||||||||||||||||
GAS/AT&T Раздельная компиляция22.10.2019, 18:15. Показов 7283. Ответов 32
Метки binutils, entry, entry point, ld, linker, symbol, undefined reference, компоновка, объектный модуль (Все метки)
помогите пожалуйста понять как надо правильно сделать.
первый файл под названием f.s
второй файл f2.s
0
|
||||||||||||||||
| 22.10.2019, 18:15 | |
|
Ответы с готовыми решениями:
32
раздельная компиляция Раздельная компиляция
|
|
Модератор
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 27.10.2019, 17:07 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Остальной код вызывающего модуля к делу не относится.
Что будет делать вызываемый код, когда получит управление, тоже не важно. Если мы знаем, каким символом обозначена точка входа в вызываемую функцию в объектном модуле, умеем передавать параметры, получать возвращаемое значение и т.п., то нет большой разницы, на каком языке написан вызываемый модуль: на фортране, бейсике,паскале или с++, если компилятор умеет создавать объектные модули в формате, который понимает ld.Для оформления точки входа воспользуемся Вашей хитростью. Пишем empty.pas
Смотрим, что по этому поводу компилятор написал в асмовском исходнике
![]() Добавлено через 41 минуту Новая рабочая версия. первый
второй аналогично
![]() Добавлено через 25 минут Компонуем наш пинг-понг, проверяем, запускаем, тестируем и отлаживаем...
Останавливаем. Запускаем отладчик.
Ctrl+C
set disassemble-next-line onи смотрим, как программа циклится
![]() lay asmlay reg
3
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Модератор
|
||||||
| 28.10.2019, 08:32 | ||||||
|
Не по теме: Ближе к теме раздела Как это используется в linux. Макрос для точки входа или данных, к которым обращается код из других файлов https://git.kernel.org/pub/scm... h=v5.4-rc5
https://git.kernel.org/pub/scm... h=v5.4-rc5
3
|
||||||
|
443 / 74 / 7
Регистрация: 29.01.2018
Сообщений: 1,274
|
|
| 28.10.2019, 19:41 [ТС] | |
|
зачем паскаль? посмотреть сделав gcc file -S я могу и без помощи форума. попросил написать пример функции на Gas в одном файле,который вызывается из программы в другом файле. написали не то что просил, а после будут говорить, что ничего не понимаю. что мне тут уже тонну примеров дали.
сотый раз прошу: пожалуйста ,не пишите то что хочется вам , а не то что просят.
0
|
|
|
Модератор
|
|
| 28.10.2019, 21:48 | |
Сообщение было отмечено pcmax как решение
Решение
Форум для того, чтобы общаться, обсуждать интересующие нас вопросы. Вы написали, я написал, он написал, она написала - вот и поговорили!
![]() Посмотреть в linux'e Вы могли и без Форума, верно? Асмовских исходников там достаточно, хоть большая часть ядра и написана на Си. Как-то же весь этот асмовский код должен вызываться, иначе зачем его писать?! Можете придложить Ваш вариант кода в первом и втором файле. Попробуем собрать и обсудить, что Вас в нём не устраивает и чем. У других участников Форума когда-нибудь могут возникнуть похожие вопросы, они наткнуться на наше обсуждение и, возможно, почерпнут что-нибудь полезное для себя.
3
|
|
|
Почетный модератор
7393 / 2639 / 281
Регистрация: 29.07.2006
Сообщений: 13,696
|
||||||||||||||||
| 29.10.2019, 01:21 | ||||||||||||||||
Сообщение было отмечено pcmax как решение
Решение
Файл lib.s:
6
|
||||||||||||||||
|
443 / 74 / 7
Регистрация: 29.01.2018
Сообщений: 1,274
|
|
| 29.10.2019, 14:13 [ТС] | |
|
тут да)))) это была реальная помощь
0
|
|
|
Модератор
|
||
| 29.10.2019, 14:16 | ||
|
2
|
||
|
6773 / 2741 / 385
Регистрация: 17.02.2013
Сообщений: 4,048
|
||
| 30.10.2019, 21:33 | ||
|
Вот задай сам себе и ответь сам себе на такие вопросы : 1.) Почему в моем коде из первого сообщения топика дикая мешанина 32-разрядного и 64-разрядного ? Почему я использовал 64-разрядный регистр и вызов системной функции от 32-разрядного Linux ? Почему у меня даже вопроса не возникло будет ли пытаться gcc накомпилировать 32-разрядный код или 64-разрядный ? Почему ошибка f.s:5: Error: bad register name `%r0' мне не подсказала ничего ? Почему я не задумался почему gcc слыхом не слыхивал про регистр r0 ? Не потому-ли, что в 32-разрядном режиме такого регистра действительно нет ? А что надо gcc сказать чтобы он про этот регистр слыхивал ? 2.) Почему я не сделал метку foo .globl ? Как я представляю себе компоновку объектных файлов ? Может я ее вообще не представляю ? Может пора запредставлять ? Почему я не понимаю что без директивы .globl в объектном файле не будет никакой информации о метке foo и вызов на эту метку из другого объектного файла скомпоноваться не сможет ? Если ты не начнешь сам себе задавать такие вопросы, для тебя все программы так и будут делиться на - не понятно почему работающие - не понятно почему не работающие и тебе постоянно придется клянчить не понятно почему работающий образец.
4
|
||
|
Модератор
|
|
| 31.10.2019, 08:40 | |
|
А может быть авторский код представляет собой инсталляцию современного искусства
и вообще не предназначен для выполнения какой-либо машиной с существующей или перспективной архитектурой. Чувства добрые он кодом пробуждал...
1
|
|
|
443 / 74 / 7
Регистрация: 29.01.2018
Сообщений: 1,274
|
||
| 31.10.2019, 14:41 [ТС] | ||
|
0
|
||
|
Модератор
|
|
| 31.10.2019, 15:28 | |
|
В программе, которой Вы время от времени пользуетесь, под гигабайт таких кирпичиков.
https://www.kernel.org/ Качаете любимую версию и изучаете все эти *.S и *.с ![]() Или прямо на сайте, если не терпится, куча примеров для всевозможных архитектур https://git.kernel.org/pub/scm... h=v5.4-rc5 https://git.kernel.org/pub/scm... h=v5.4-rc5 https://git.kernel.org/pub/scm... h=v5.4-rc5
0
|
|
| 31.10.2019, 15:28 | |
|
Помогаю со студенческими работами здесь
33
Раздельная компиляция Раздельная компиляция Шаблоны и раздельная компиляция Раздельная компиляция и шаблоны Раздельная компиляция и шаблоны Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога
Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
|
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование
. \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json>
Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом.
# Check if. . .
|
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так:
https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347
Основана на STM32F303RBT6.
На борту пять. . .
|
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
|
|
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу,
и светлой Луне.
В мире
покоя нет
и люди
не могут жить в тишине.
А жить им немного лет.
|
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила»
«Время-Деньги»
«Деньги -Пуля»
|
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога
Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
|
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога
Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
|