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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
.::.DIMA.::.
143 / 143 / 4
Регистрация: 26.10.2008
Сообщений: 782
#1

Подпрограммы на ассемблерских вставках на c++ - C++

02.06.2009, 00:45. Просмотров 529. Ответов 4
Метки нет (Все метки)

Я делаюна assembler подпрограмму.
Главная программа имеет такой вид:
Этот фрагмент должен складывать 2 числа
C++
1
2
3
4
5
6
7
8
#include <iostream>
using namespace std;
extern "C" int _stdcall func1 (int, int);
int main ()
{
    cout << func1 (30, 53) << endl;
    return 0;
}
Потом я создаю текстовый файл, копирую в него следующий код:
Assembler
1
2
3
4
5
6
7
8
9
10
.386
.model flat
.data
.code
func1 proc stdcall, a: dword, b: dword
mov eax, a
add, eax, b
ret 8
func1 endp
end
Добавляю его в проект через Project/Add existing item, и переименовываю его прямо в программе или до того как добавляю в проект в func1.asm. Расширение соответственно становится не txt, а asm.
Компилятор выдаёт такие ошибки:
Код
asm.obj : error LNK2001: unresolved external symbol _func1@8
C:\Temp\asm.exe : fatal error LNK1120: 1 unresolved externals
Не знаю, насколько такой способ верен, по крайней мере мне так сказали делать.
Возможно имеются ошибки в оформлении самой подпрограммы, но ошибки вызодят прямо на этапе линковки.
Скажите, в чём ошибка?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.06.2009, 00:45
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Подпрограммы на ассемблерских вставках на c++ (C++):

А вставках на языке Си - Python
Часто говорят что критически важные с точки зрения производительность моменты можно переписать на Си, но как? как потом это вызывать и...

Массив из вещественных чисел в ассемблерных вставках на FreePascal - Assembler
Всем привет!=) Пишу программу на ассемблере, возникла проблема с обработкой массива из вещественных чисел. Вкратце: найти сумму...

Составить регулярное выражение удаления комментариев в javasctipt вставках - PHP
В своей работе, использую в самодельном движке, вывод страницы в одну строчку. Вроде как чтоб было зашифровано и модно как в google.com и...

Составление прогами по использованию подпрограммы процедур и подпрограммы функций - Pascal
Записать программу решения задачи. Процедуру вычислений повторяющихся записать в виде подпрограммы. Прошу помогите, а то я вопще не...

Создать личный модуль, содержащий указанные подпрограммы. Написать программу, которая подключает созданный модуль и использует его подпрограммы - Pascal ABC
Создать личный модуль, содержащий указанные подпрограммы. Написать программу, которая подключает созданный модуль и использует его...

Подпрограммы-функции. Переписать с применением подпрограммы-функции с параметрами - Free Pascal
program lab6; const x:array of real=(2.3,4,5.1,5.7,7,2.9,3,8.2,9,3.3 ); var m,d,d1:real; i:integer; begin m:=0; for...

А вставках на языке Си - Python
Часто говорят что критически важные с точки зрения производительность моменты можно переписать на Си, но как? как потом это вызывать и...

Массив из вещественных чисел в ассемблерных вставках на FreePascal - Assembler
Всем привет!=) Пишу программу на ассемблере, возникла проблема с обработкой массива из вещественных чисел. Вкратце: найти сумму...

Составить регулярное выражение удаления комментариев в javasctipt вставках - PHP
В своей работе, использую в самодельном движке, вывод страницы в одну строчку. Вроде как чтоб было зашифровано и модно как в google.com и...

Составление прогами по использованию подпрограммы процедур и подпрограммы функций - Pascal
Записать программу решения задачи. Процедуру вычислений повторяющихся записать в виде подпрограммы. Прошу помогите, а то я вопще не...

Создать личный модуль, содержащий указанные подпрограммы. Написать программу, которая подключает созданный модуль и использует его подпрограммы - Pascal ABC
Создать личный модуль, содержащий указанные подпрограммы. Написать программу, которая подключает созданный модуль и использует его...

Подпрограммы-функции. Переписать с применением подпрограммы-функции с параметрами - Free Pascal
program lab6; const x:array of real=(2.3,4,5.1,5.7,7,2.9,3,8.2,9,3.3 ); var m,d,d1:real; i:integer; begin m:=0; for...

А вставках на языке Си - Python
Часто говорят что критически важные с точки зрения производительность моменты можно переписать на Си, но как? как потом это вызывать и...

Массив из вещественных чисел в ассемблерных вставках на FreePascal - Assembler
Всем привет!=) Пишу программу на ассемблере, возникла проблема с обработкой массива из вещественных чисел. Вкратце: найти сумму...

Составить регулярное выражение удаления комментариев в javasctipt вставках - PHP
В своей работе, использую в самодельном движке, вывод страницы в одну строчку. Вроде как чтоб было зашифровано и модно как в google.com

А вставках на языке Си - Python
Часто говорят что критически важные с точки зрения производительность моменты можно переписать на Си, но как? как потом это вызывать и...

Массив из вещественных чисел в ассемблерных вставках на FreePascal - Assembler
Всем привет!=) Пишу программу на ассемблере, возникла проблема с обработкой массива из вещественных чисел. Вкратце: найти сумму...

Составить регулярное выражение удаления комментариев в javasctipt вставках - PHP
В своей работе, использую в самодельном движке, вывод страницы в одну строчку. Вроде как чтоб было зашифровано и модно как в google.com и...

Составление прогами по использованию подпрограммы процедур и подпрограммы функций - Pascal
Записать программу решения задачи. Процедуру вычислений повторяющихся записать в виде подпрограммы. Прошу помогите, а то я вопще не...

Создать личный модуль, содержащий указанные подпрограммы. Написать программу, которая подключает созданный модуль и использует его подпрограммы - Pascal ABC
Создать личный модуль, содержащий указанные подпрограммы. Написать программу, которая подключает созданный модуль и использует его...

Подпрограммы-функции. Переписать с применением подпрограммы-функции с параметрами - Free Pascal
program lab6; const x:array of real=(2.3,4,5.1,5.7,7,2.9,3,8.2,9,3.3 ); var m,d,d1:real; i:integer; begin m:=0; for...


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

Или воспользуйтесь поиском по форуму:
4
alex_x_x
бжни
2450 / 1655 / 84
Регистрация: 14.05.2009
Сообщений: 7,162
02.06.2009, 00:56 #2
так а кто за тебя компилировать асмовский файл будет, тебе надо его скомпилировать в obj, а студийный линкер его уже подцепит, должно быть так
0
.::.DIMA.::.
143 / 143 / 4
Регистрация: 26.10.2008
Сообщений: 782
02.06.2009, 01:00  [ТС] #3
А можно подробнее, как это сделать?
0
alex_x_x
бжни
2450 / 1655 / 84
Регистрация: 14.05.2009
Сообщений: 7,162
02.06.2009, 01:20 #4
я честно не очень уверен что это должно быть так но предполагаю:
1. берешь асмовский компилятор, компилируешь *.asm в obj, не линкуя программу, может быть компилятор и линковщик будет в одном флаконе, тогда какая-нить опция нужна, но смысл в получении объектного файла
2. кладешь его в папку из которой компилируешь сишный файл, должно быть линковщик его сам подцепит, хотя не факт, возможно надо будет в опциях прописать
наверняка не скажу ,так как такое проделывал в gcc, с заданием всего из консоли, в студии не пробовал
0
.::.DIMA.::.
143 / 143 / 4
Регистрация: 26.10.2008
Сообщений: 782
03.06.2009, 00:36  [ТС] #5
Спасибо. Разобрался сам. Я просто не так добавлял файл.
0
03.06.2009, 00:36
Ответ Создать тему
Опции темы

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