Модераторы: Daevaorn

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> C + asm 
V
    Опции темы
Fedor
Дата 8.2.2006, 23:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Днепрянин
****


Профиль
Группа: Участник
Сообщений: 2090
Регистрация: 8.2.2003
Где: Великий

Репутация: нет
Всего: 32



В общем, есть какой-то минимальный asm-модуль. Пусть он просто выводит на экран строку. Например:
Код

include macros.asm

.model small
.stack 64h
.data
    
  szTestMessage db "Test message",'$'

.code
  assume cs : @code, ds : @data, ss : @stack

  public pppp

pppp proc far
     push ds
     xor ax,ax
     push ax
     mov ax,@data
     mov ds,ax

  prints szTestMessage
ret
endp pppp
end  

Макрос prints определен в macros.asm и просто выводит строку на экран. Но это не суть важно.

Тасмом делаем из этого файла obj.

Как мне теперь использовать процедуру pppp в СPP, как подключить этот obj-файл?

Я пытался как библиотеку в опциях линковщика прицепить, но ругается.
Я как бы даже не прошу мне решение подсказать, ибо интересно самому нарыть, но просто подскажите, в какую сторону рыть, ибо я не смог составить поисковый запрос на msdn, чтоб нашло то, что мне нужно.

Использую msvc2003.




--------------------
Мы - Днепряне. Мы всех сильней.
PM ICQ   Вверх
cardinal
Дата 8.2.2006, 23:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Инженер
****


Профиль
Группа: Экс. модератор
Сообщений: 6003
Регистрация: 26.3.2002
Где: Германия

Репутация: 2
Всего: 99



Как использовать Assembler в VB?
Думаю, что нужно идти в похожем направлении...


--------------------
Немецкая оппозиция потребовала упростить натурализацию иммигрантов
В моем блоге: Разные истории из жизни в Германии

"Познание бесконечности требует бесконечного времени, а потому работай не работай - все едино".  А. и Б. Стругацкие
PM   Вверх
Ignat
Дата 9.2.2006, 11:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Флудератор
****


Профиль
Группа: Экс. модератор
Сообщений: 4030
Регистрация: 19.4.2004
Где: غيليندزيك مدينة

Репутация: 3
Всего: 73



Fedor, чем ты компилировал asm? obj файлы имеют разный формат у различных компиляторов... Если не ошибаюсь, то у мелкософта это COFF. Выходом будет компиляция тем же C-шным компилерром в asm-вставке.
__asm{
...
}


--------------------
Теперь при чем :P
PM   Вверх
Fedor
Дата 9.2.2006, 15:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Днепрянин
****


Профиль
Группа: Участник
Сообщений: 2090
Регистрация: 8.2.2003
Где: Великий

Репутация: нет
Всего: 32



Ignat
Цитата(Fedor @ 8.2.2006, 23:01 Найти цитируемый пост)

Тасмом делаем из этого файла obj


Асм-вставка не подходит. Нужно именно в отдельном файле.


З.Ы. Я кое-что нарыл на сырцах, буду разбиратся. Если вопросы появятся, буду задавать. Пока что спасибо за помощь smile


--------------------
Мы - Днепряне. Мы всех сильней.
PM ICQ   Вверх
Ignat
Дата 9.2.2006, 16:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Флудератор
****


Профиль
Группа: Экс. модератор
Сообщений: 4030
Регистрация: 19.4.2004
Где: غيليندزيك مدينة

Репутация: 3
Всего: 73



сорри, не заметил, что тасм.
Fedor, кстати, возможно тасмовский obj имеет формат OMF, применяемый борландом, тогда можно попробовать компилировать борландовским bcc.


--------------------
Теперь при чем :P
PM   Вверх
Fedor
Дата 9.2.2006, 16:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Днепрянин
****


Профиль
Группа: Участник
Сообщений: 2090
Регистрация: 8.2.2003
Где: Великий

Репутация: нет
Всего: 32



хм. А если я хочу использовать Visual C++, то я не могу tasm-ом объектники создавать? Выход - masm?


--------------------
Мы - Днепряне. Мы всех сильней.
PM ICQ   Вверх
Ignat
Дата 9.2.2006, 16:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Флудератор
****


Профиль
Группа: Экс. модератор
Сообщений: 4030
Регистрация: 19.4.2004
Где: غيليندزيك مدينة

Репутация: 3
Всего: 73



Цитата(Fedor @ 9.2.2006, 16:17 Найти цитируемый пост)

Выход - masm?

Теоретически да, но майкрософтовцы не сразу перешли к COFF формату. А в асмовских компиллерах я не силен.
Как вариант, можно написать весь проект в VC++, создать студией Makefile, а затем переправить его под борландовский компиллятор, он вполне корректно жует MFC со всеми её макросами. Но предварительно стоит убедиться, что bcc корректно прилинкует тасмовый obj.


--------------------
Теперь при чем :P
PM   Вверх
Fedor
Дата 9.2.2006, 17:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Днепрянин
****


Профиль
Группа: Участник
Сообщений: 2090
Регистрация: 8.2.2003
Где: Великий

Репутация: нет
Всего: 32



Ага. МСДН:
Цитата
LINK accepts .obj files that are either Common Object File Format (COFF) or 32-bit Object Module Format (OMF). Microsoft's Visual C++ compiler creates COFF .obj files.

LINK automatically converts 32-bit OMF objects to COFF. However, there are limitations to OMF to COFF conversions. OMF can represent some things that cannot be represented in COFF. If there are errors when the linker converts from OMF to COFF, then you will need to use COFF .obj files instead of OMF .obj files as input to the linker.


Значит, можно использовать тасмовские объектники.


--------------------
Мы - Днепряне. Мы всех сильней.
PM ICQ   Вверх
Ignat
Дата 9.2.2006, 17:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Флудератор
****


Профиль
Группа: Экс. модератор
Сообщений: 4030
Регистрация: 19.4.2004
Где: غيليندزيك مدينة

Репутация: 3
Всего: 73



Цитата(Fedor @ 9.2.2006, 17:11 Найти цитируемый пост)

Значит, можно использовать тасмовские объектники.

Не факт smile мне не удавалось.

Цитата

If there are errors when the linker converts from OMF to COFF, then you will need to use COFF .obj files instead of OMF .obj files as input to the linker.

Переведешь?


--------------------
Теперь при чем :P
PM   Вверх
Fedor
Дата 9.2.2006, 17:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Днепрянин
****


Профиль
Группа: Участник
Сообщений: 2090
Регистрация: 8.2.2003
Где: Великий

Репутация: нет
Всего: 32



Цитата(Ignat @ 9.2.2006, 17:17 Найти цитируемый пост)

If there are errors when the linker converts from OMF to COFF, then you will need to use COFF .obj files instead of OMF .obj files as input to the linker.

Хм. Ну возможно, именно поэтому у меня и не получается.

Ок. Вечером скачаю masm, буду его юзать.


--------------------
Мы - Днепряне. Мы всех сильней.
PM ICQ   Вверх
Ignat
Дата 9.2.2006, 17:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Флудератор
****


Профиль
Группа: Экс. модератор
Сообщений: 4030
Регистрация: 19.4.2004
Где: غيليندزيك مدينة

Репутация: 3
Всего: 73



Цитата(Fedor @ 9.2.2006, 17:25 Найти цитируемый пост)

Ок. Вечером скачаю masm, буду его юзать.

Результат расскажи, интересно-таки smile


--------------------
Теперь при чем :P
PM   Вверх
Fedor
Дата 9.2.2006, 19:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Днепрянин
****


Профиль
Группа: Участник
Сообщений: 2090
Регистрация: 8.2.2003
Где: Великий

Репутация: нет
Всего: 32



В общем, закачал MASM. Делаю объектный файл. Вроде, все ок. Файл формата coff.

Далее в вижуал студии в опциях проекта в опциях линковщика ставлю Additional Dependencies файл asm.obj.

Объявляю функцию как extern "C", вызываю ее в программе

Билдю, и вот тут линковщик ругается.
Говорит, что такой экстерн-функции нигде нету.


--------------------
Мы - Днепряне. Мы всех сильней.
PM ICQ   Вверх
Ignat
Дата 9.2.2006, 19:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Флудератор
****


Профиль
Группа: Экс. модератор
Сообщений: 4030
Регистрация: 19.4.2004
Где: غيليندزيك مدينة

Репутация: 3
Всего: 73



Fedor, можешь скинуть мне этот obj на мыло?


--------------------
Теперь при чем :P
PM   Вверх
Fedor
Дата 9.2.2006, 19:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Днепрянин
****


Профиль
Группа: Участник
Сообщений: 2090
Регистрация: 8.2.2003
Где: Великий

Репутация: нет
Всего: 32



Не могу smile Ибо не знаю. В профиле не видно. smile
Леплю сюда.


Присоединённый файл ( Кол-во скачиваний: 3 )
Присоединённый файл  Asm.obj 0,11 Kb


--------------------
Мы - Днепряне. Мы всех сильней.
PM ICQ   Вверх
Ignat
Дата 9.2.2006, 19:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Флудератор
****


Профиль
Группа: Экс. модератор
Сообщений: 4030
Регистрация: 19.4.2004
Где: غيليندزيك مدينة

Репутация: 3
Всего: 73



Fedor, я вообще не нашел заголовка экспортируемой функции в файле.


--------------------
Теперь при чем :P
PM   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0595 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.