Имеется доисторический Borland C++ (3.1 вроде) for DOS и не менее доисторический tasm (какая версия, без понятия). Можно ли каким-либо образом из ассемблерной программы вызывать стандартные функции С-шной библиотеки - всякие там printf и т.д. (например, слинковав ее объектный файл с BC-шными *.lib-файлами или еще каким-нибудь способом) ? С tasm плохо знаком, и с borland с++ тем более, т.к. пишу обычно на fasm, и доисторические C-компиляторы тоже не юзаю... Но тут знакомому в универе такое "задание" дали, он у меня спросил... Я, естественно, во времена этих мамонтов еще пешком под стол ходил, и ничем помочь ему пока не могу.
объектники? асм вставки? Вы главное не работайте из асма напрямую с классами, или дизассемблируйте такие места и посмотрите как это делает сам компилер. Асм функи оформляйте по С стайл правилам, манглите, если надо, а в С++ части объявляйте их как extern "C". Подробности см в вашем хелпе. И еще, БС 3 не компилировал напрямую С++. Осуществлялась промежуточная трансляция в С. Отловите этот момент - будет проще. Кроме того, можно оттранслировавть в асм короткий кусок и потренироваться на нем.
Нет, немного не то) Все гораздо проще. Разобрался... Короче, задача состояла вот в чем. Заставить работать что-то вроде такого: Code (Text): .model small .stack .data message db "Hello",0 .code extrn _printf:near Public _main _main proc near start: mov ax,DGROUP mov ds,ax lea ax,message push ax call _printf add sp,2 mov ah,4Ch int 21h _main endp end start Где _printf - функция из BC-шного RTL. Полчаса посидел, разобрался. Линковать надо так: tlink c0s.obj test.obj,test.exe,,cs.lib Где c0s.obj и cs.lib - файлы из комплекта BC 3.1 (RTL для small-модели памяти). Извращение, конечно, но препод у них в универе вот так вот придумал. С другой стороны - а что, в принципе, не такое уж и плохое задание на смекалку. =)
а препод САМ это сможет сделать? и ЗАЧЕМ это всё нужно? скажи "знако-муму", пусть скажет преподу, что он - клоун
Всё это конечно хорошо, я только одного не пойму, нафига сейчас преподают эти убогие BC 3.1. Они же на современных осях тормозят как сволочи, и уже очень далеки от стандарта. На западе врядли эту лабуду встретишь.
Нам в универе препод вообще заявил как-то "Стоит в ТР7 написать ASM и вы будете писать на чистейшем асемблере" мда...