Форум программистов, компьютерный форум, киберфорум
Наши страницы
Visual C++
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.67/3: Рейтинг темы: голосов - 3, средняя оценка - 4.67
SeryZone
56 / 28 / 18
Регистрация: 09.03.2012
Сообщений: 726
Записей в блоге: 1
#1

ASM-вставка, OBJ файл

11.06.2014, 10:07. Просмотров 561. Ответов 7
Метки нет (Все метки)

Как вызывать подпрограмму из OBJ-файла скомпилированного в FASM'e?
В дельфи всё как-то намного проще:
Delphi
1
2
{$L Proc.OBJ}
procedure Proc(x:array of integer; out x:integer); external; stdcall;
Как на С++ такое запилить (реал, очень надо)?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.06.2014, 10:07
Ответы с готовыми решениями:

Как прикрутить .obj файл к проекту?
Студия 2008 экспресс.Как это сделать?Пробовал в дополнительные параметры...

Парсинг .obj файла
при парсенге файла столкнулся с серьёзной проблемой, а именно у треугольника...

Подключение obj файла
Здравствуйте, задали на лабаре сделать любую программу, которая использует...

Подключение obj файла
Всем добрый день Сделал в МАСМ obj файл Вот его шапка .486 .model ...

Подключение *.obj файла к проекту
Всем привет! Задали лабораторную, в которой нужно подключить внешний obj файл,...

7
CheshireCat
Эксперт С++
2912 / 1261 / 114
Регистрация: 27.05.2008
Сообщений: 3,463
11.06.2014, 13:05 #2
C++
1
extern "C" int __stdcall Proc(int x[]);
Ну и proc.obj, разумеется, включить в проект.
0
SeryZone
56 / 28 / 18
Регистрация: 09.03.2012
Сообщений: 726
Записей в блоге: 1
11.06.2014, 15:25  [ТС] #3
CheshireCat, в фасме я напишу тогда так:
Assembler
1
2
extrn x ; кагбэ параметр
extrn Result ;Тут понятно
А то я к дельфи привык немного, там по-другому... А кстати, а void можно заюзать?
0
CheshireCat
Эксперт С++
2912 / 1261 / 114
Регистрация: 27.05.2008
Сообщений: 3,463
11.06.2014, 15:42 #4
А зачем в фасме тебе описывать x и Result? x - это параметр, для массива (неизвестной длины) это будет указатель, передаваемый через стек, доступ к нему у тебя будет через ebp + смещение; а Result - это вообще выходной результат, он обычно возвращается через eax.

void заюзать, конечно же, можно. Но как ты будешь тогда возвращать результат работы Proc?
0
SeryZone
56 / 28 / 18
Регистрация: 09.03.2012
Сообщений: 726
Записей в блоге: 1
11.06.2014, 16:30  [ТС] #5
CheshireCat, голова ломается. Со стэком я ничего не понимаю! Ладно, dword передам через стэк, ну а 256-битный AVX тип, как мне передать через стэк?
0
CheshireCat
Эксперт С++
2912 / 1261 / 114
Регистрация: 27.05.2008
Сообщений: 3,463
11.06.2014, 17:22 #6
Читать здесь: http://www.agner.org/optimize/calling_conventions.pdf
0
murderer
3318 / 1465 / 133
Регистрация: 06.10.2010
Сообщений: 3,217
13.06.2014, 16:42 #7
256-битный AVX тип, как мне передать через стэк?
Через указатель
0
SeryZone
56 / 28 / 18
Регистрация: 09.03.2012
Сообщений: 726
Записей в блоге: 1
14.06.2014, 22:27  [ТС] #8
murderer, Так, указатель на 256-битную переменную находится в [esp+8]. Извлекаем мы его оттуда как?
В делфи я так делал: x := pointer^[f], например. А на ассемблере как извлечь?

Добавлено через 10 часов 20 минут
Так что-ли?
Assembler
1
2
 mov eax, [esp+8]
 vmovaps [eax]
0
14.06.2014, 22:27
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.06.2014, 22:27

adodb.obj : error LNK2001:__imp__executor_globals_id
Доброе время суток, знатоки. Сразу скажу, что я программист по PHP и Си для...

А можно ли в Visual Studio получить .exe из данного .obj ?
А можно ли в Visual Studio получить .exe из данного .obj ?? Подробно!!

Ошибка nafxcw.lib(afxglobals.obj) : error LNK2005
Доброго времени суток, Проект был выполнен на Visual Studio C++ 6 на...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru