Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Низкоуровневое программирование > Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 11.05.2011, 22:10   #1
Farrel
Форумчанин
 
Аватар для Farrel
 
Регистрация: 21.04.2010
Сообщений: 144
По умолчанию Линк c++ и асм

Народ, спрочно нужна помощ. В гугл не посылайте, по крайней мере сразу (перепробовал кучу советов оттуда).
Итак с
Код:
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
					
extern "C" int _stdcall convert(int base, int newbase);

void main()
{
}
И соответственно асм
Код:
.386
.model flat
public convert
.data
.code
convert proc
	push bp
	mov bp, sp
	mov ax, dword ptr[sp+4]
	add ax. dword ptr[sp+2]
	pop bp
	ret 8
convert endp
end
Использую borlandc? и там походу встроет тасм.
В консоли пишем:
c:\borlandc\bin\bcc.exe c:\sourse\1.cpp c:\course\2.asm
И получаю ошибки

1.cpp declaration syntax error (если убрать объявление extern функции исчезает, но почему она возникает вообще я не понимаю)

unable to execute command 'tasm.exe' (тоже неясно откуда, так причину и не нашёл)
Farrel вне форума Ответить с цитированием
Старый 11.05.2011, 22:44   #2
Psionic
Пользователь
 
Регистрация: 29.11.2008
Сообщений: 23
По умолчанию

Борланд С, не с++? Тогда убери "С" только extern (внешня функция), кстати связка Студия+масм работает легче, я тебе в теме другой ответил.
Зделать как надо, и зделать так чтобы получить нужный результат - это разные вещи
Psionic вне форума Ответить с цитированием
Старый 11.05.2011, 23:05   #3
Farrel
Форумчанин
 
Аватар для Farrel
 
Регистрация: 21.04.2010
Сообщений: 144
По умолчанию

Проблема в том, что эт запасной вариант. Препод настоятельно рекомендовал делать в borland
кста. после исправления unable to execute command 'tasm.exe' так и остался

Последний раз редактировалось Farrel; 11.05.2011 в 23:09.
Farrel вне форума Ответить с цитированием
Старый 11.05.2011, 23:28   #4
Psionic
Пользователь
 
Регистрация: 29.11.2008
Сообщений: 23
По умолчанию

Попробуй раздельную линковку (сперва скомпонуй в .lib файл асмовый исходник) потом подключи его как статическую библиотеку в с-проэкт. Если линкер не найдет функции convert, в асмовом исходнике переименуй её в _convert@8, по сишному стдкел декорированию так будет выглядеть функция с двумя 4 байтными аргументами после сборки сишным компилятором. (хотя проблемы может с декорированием и не быть, это я из опыта общения с майкрософтовым компилятором исхожу).
Зделать как надо, и зделать так чтобы получить нужный результат - это разные вещи
Psionic вне форума Ответить с цитированием
Старый 11.05.2011, 23:33   #5
Farrel
Форумчанин
 
Аватар для Farrel
 
Регистрация: 21.04.2010
Сообщений: 144
По умолчанию

Немого разобрался. Там просто не дописаны пути для tasm в turboc.cfg, заставил работать tasm, теперь трабла с tlink. Модет кто знает, где можно посмотреть мануал по конфигу? Ну или хотя бы как конкретно подключается tlink (там ведь кроме пути к файлу какойто ещё префикс пишется, навроде -EC).
Farrel вне форума Ответить с цитированием
Старый 11.05.2011, 23:50   #6
Psionic
Пользователь
 
Регистрация: 29.11.2008
Сообщений: 23
По умолчанию

tlink (не tlink32 ?) - хм, а ты обьектники уже получил чтобы их линковать? Просто есть другие дос-совместимые линкеры, например ulink (довольно неплохо документирован).
Зделать как надо, и зделать так чтобы получить нужный результат - это разные вещи
Psionic вне форума Ответить с цитированием
Старый 11.05.2011, 23:54   #7
Farrel
Форумчанин
 
Аватар для Farrel
 
Регистрация: 21.04.2010
Сообщений: 144
По умолчанию

Решаю проблемы по мере их поступления. Вот скрин. По крайней мере 1 obj уже есть, ошибок нет так что как именно он будет работать и чего создавать меня не особо волнует, только походу осталось прописать конфиг для линка
Изображения
Тип файла: jpg Безымянный.jpg (62.0 Кб, 150 просмотров)

Последний раз редактировалось Farrel; 11.05.2011 в 23:56.
Farrel вне форума Ответить с цитированием
Старый 12.05.2011, 00:34   #8
Psionic
Пользователь
 
Регистрация: 29.11.2008
Сообщений: 23
По умолчанию

Судя по скрину у тебя вин7 стоит, у меня под 7-кой tlink наглухо запускатся не хочет, вполне возможно что утебя проблемы теже.
Зделать как надо, и зделать так чтобы получить нужный результат - это разные вещи
Psionic вне форума Ответить с цитированием
Старый 12.05.2011, 00:50   #9
Farrel
Форумчанин
 
Аватар для Farrel
 
Регистрация: 21.04.2010
Сообщений: 144
По умолчанию

Ща попробовал на хп запустить, та же фигня вышла. Ну не видит он этот тлинк чтоб его.
Farrel вне форума Ответить с цитированием
Старый 12.05.2011, 16:19   #10
Farrel
Форумчанин
 
Аватар для Farrel
 
Регистрация: 21.04.2010
Сообщений: 144
По умолчанию

ДОБИЛСЯ РЕЗУЛЬТАТОВ! ВЫЛОЖУ СВОЙ МАНУАЛ ПО ТЕМЕ, ТК НОРМАЛЬНОГО ТАК И НЕ НАШЁЛ.

1. Копируем папку BORLANDC (лучше всего на D)
2. В консоли переходим к диску d (вводим d: )
3. Переходим в папку D:\BORLANDC\BIN (последовательно вводим
chdir borlandc и chdir bin)
4. Исходники сбрасываем в D:\BORLANDC\BIN
5. запускаем из консоли bcc file1.cpp file2.asm
6. и наконец из консоли вызываем file1.exe
7. радуемся
Farrel вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Работа с сопроцессором асм. vlad_zasranec Помощь студентам 5 20.12.2010 07:46
Перевод из асм в с++ Flay Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 6 18.09.2010 21:05
После наведения курсора на линк нужен выбор формата файла для скачивания armansystem HTML и CSS 0 25.05.2010 22:33
линк на файл или каталог в RSS лентах damned20 HTML и CSS 3 20.05.2009 19:00