Форум программистов, компьютерный форум, киберфорум
Наши страницы

Visual C++

Войти
Регистрация
Восстановить пароль
 
SeryZone
56 / 28 / 5
Регистрация: 09.03.2012
Сообщений: 726
Записей в блоге: 1
#1

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

11.06.2014, 10:07. Просмотров 553. Ответов 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
Я подобрал для вас темы с готовыми решениями и ответами на вопрос ASM-вставка, OBJ файл (Visual C++):

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

Подключение obj файла - Visual C++
Всем добрый день Сделал в МАСМ obj файл Вот его шапка .486 .model flat,stdcall .code start: public matrixlab matrixlab...

Подключение obj файла - Visual C++
Здравствуйте, задали на лабаре сделать любую программу, которая использует функции написанные на других языках. Используя только метод...

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

adodb.obj : error LNK2001:__imp__executor_globals_id - Visual C++
Доброе время суток, знатоки. Сразу скажу, что я программист по PHP и Си для темный лес. Проблема в следующем, имеется .dll для...

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

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

void заюзать, конечно же, можно. Но как ты будешь тогда возвращать результат работы Proc?
0
SeryZone
56 / 28 / 5
Регистрация: 09.03.2012
Сообщений: 726
Записей в блоге: 1
11.06.2014, 16:30  [ТС] #5
CheshireCat, голова ломается. Со стэком я ничего не понимаю! Ладно, dword передам через стэк, ну а 256-битный AVX тип, как мне передать через стэк?
0
CheshireCat
Эксперт С++
2907 / 1256 / 81
Регистрация: 27.05.2008
Сообщений: 3,449
11.06.2014, 17:22 #6
Читать здесь: http://www.agner.org/optimize/calling_conventions.pdf
0
murderer
3572 / 1461 / 82
Регистрация: 06.10.2010
Сообщений: 3,215
13.06.2014, 16:42 #7
256-битный AVX тип, как мне передать через стэк?
Через указатель
0
SeryZone
56 / 28 / 5
Регистрация: 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
Привет! Вот еще темы с ответами:

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

Как указать линкеру Visual C++ 6.0 два obj-файла? - Visual C++
Пожалуйста помогите. В каталоге bin имеется только файл MSDEV.EXE Получается,что опции компилятора/линкера можно редактировать только...

Объектные файлы *.obj, *.o - они случайно не кроссплатформенные? Если нет, то реальна ли конвертация? - C++
Объясню подробнее, о чем я. Пишем простой код на си, без всяких платформо- и компиляторозависимых функций #include <stdio.h> ...

LIBCD.lib(crt0.obj) : error LNK2001: unresolved external symbol _main - Visual C++
В нескольких словах, ошибка: LIBCD.lib(crt0.obj) : error LNK2001: unresolved external symbol _main Debug/1.exe : fatal error...


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

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

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