OSDev http://osdev.su/ |
|
Подключение заголовочного файла Cи к программе на ассемблере http://osdev.su/viewtopic.php?f=6&t=827 |
Страница 1 из 1 |
Автор: | mikesmmm [ 26 ноя 2013, 05:52 ] |
Заголовок сообщения: | Подключение заголовочного файла Cи к программе на ассемблере |
Всем доброго времени суток! Вопрос по практике программирования: Как подключить заголовочный файл Cи к программе на ассемблере, чтобы пользоваться его определениями? Например, имеется заголовочный файл example.h, где находится единственное определение #define OFFSET 0x02 Хотелось чтобы в следующем коде в регистре al оказалось значение 3. .intel_syntax noprefix .text mov al, [var+OFFSET] var: .byte 0x01 .byte 0x02 .byte 0x03 |
Автор: | pavia [ 26 ноя 2013, 07:30 ] |
Заголовок сообщения: | Re: Подключение заголовочного файла Cи к программе на ассемб |
А никак. Заголовочные файлы в Си согласно формальной грамматике не отличаются от файлов с кодом("*.c"). Есть несколько решений: 1. Писать на встроенном ассемблере. 2. Ручками конвертировать заголовочные файлы в формат приемлемый в ассемблере. 3. Тоже самое но сделать некоторый скрипт, который с конвертирует заголовочные файлы. А так обычно всё пишут на Си, на ассемблере очень мало кода. Поэтому подключать заголовочные файлы не требуется. Это я к тому что архитектуре лучше разделить более высокий код и низкий на ассемблере. Тогда и подключать ничего не надо будет. #define OFFSET 0x02 можно заменить на equ OFFSET 0x02 |
Автор: | Himik [ 26 ноя 2013, 11:27 ] |
Заголовок сообщения: | Re: Подключение заголовочного файла Cи к программе на ассемб |
Подключается точно так же, как и в С #include "example.h" Но это особенность GCC и GAS, для других компиляторов не сработает. Смотри как в теме viewtopic.php?f=6&t=811 |
Автор: | mikesmmm [ 28 ноя 2013, 04:26 ] |
Заголовок сообщения: | Re: Подключение заголовочного файла Cи к программе на ассемб |
Himik писал(а): Подключается точно так же, как и в С #include "example.h" Но это особенность GCC и GAS, для других компиляторов не сработает. Смотри как в теме viewtopic.php?f=6&t=811 Не подключается. Это работает с ACK. А разбираю я как раз исходники учебной Minix3. Хочу перевести ее на gcc в рамках дипломной. pavia писал(а): А никак. Заголовочные файлы в Си согласно формальной грамматике не отличаются от файлов с кодом("*.c"). Есть несколько решений: 1. Писать на встроенном ассемблере. 2. Ручками конвертировать заголовочные файлы в формат приемлемый в ассемблере. 3. Тоже самое но сделать некоторый скрипт, который с конвертирует заголовочные файлы. А так обычно всё пишут на Си, на ассемблере очень мало кода. Поэтому подключать заголовочные файлы не требуется. Это я к тому что архитектуре лучше разделить более высокий код и низкий на ассемблере. Тогда и подключать ничего не надо будет. #define OFFSET 0x02 можно заменить на equ OFFSET 0x02 2 и 3 варианты приемлемы в условиях нехватки времени, но ощущение такое, что есть решение элегантнее. Буду копать дальше. Спасибо за ответы! |
Автор: | Himik [ 28 ноя 2013, 14:24 ] |
Заголовок сообщения: | Re: Подключение заголовочного файла Cи к программе на ассемб |
Файл ассемблерной программы должен иметь тип (расширение имени) .S , и компилироваться с помощью gcc. |
Страница 1 из 1 | Часовой пояс: UTC + 3 часа |
Powered by phpBB® Forum Software © phpBB Group http://www.phpbb.com/ |