Библиотека подпрограмм на TASM
интересует , как написать библиотеку процедур. Так , чтобы программа, которую пишу , могла бы подключать её и использовать подпрограммы, в ней определённые. Знаю метод совместной сборки из OBJ файлов , но он не представляется удобным.
Из каких соображений?
ответь сам- из каких соображений такой метод можно назвать удобным?
я просто все подпрограммы скидываю в один файл потом просто копирую подпрограммы оттуда
то есть такой фишки ОДНОЗНАЧНО нету? неверно, а как же DLL ? толmrj они виндовые, а меня это интересует бз привязки к ОС.
Йопт и мат-перемат.
Ну если через либу не устраивает, то почему бы эти процедуры не оформить в файлах-инклудах, а потом делать с ними
Код:
include имя_файла
в INC файлы можно понапихать макросов... а вот процедур нельзя.
Ну, не знаю как TASM, а вот MASM относится к такому способу нормально.
всё, перехожу на MASM
а жаль, что тасм с этими делами не дружит
Да, можно использовать включаемые файлы, в которых каждую подпрограмму поместить в отдельный макрос, после чего в том месте, где обычно размещаешь подпрограмму, достаточно просто указать имя соответствующего макроса. Можно сделать и получше: во вкючаемом файле использовать макрокод, добавляющий только те подпрограммы, к которым делались обращения. Одним словом, много чего можно придумать...
Какого х??? РТФМ tlib.exe. А то понаехали тут..
Как абсолютно верно отметил Александрос, для этого есть утилита tlib.
Усё. А ваще ребята - книги читайте - полезно!
[quote=ant-str]
Ребят. Есть такая фишка. Называется библиотека. Каждую процедуру в отдельном файле компилите в .obj-файл, а затем эти файлы собираете в .lib файлы.
Как абсолютно верно отметил Александрос, для этого есть утилита tlib.
Усё. А ваще ребята - книги читайте - полезно!
[/quote]
[COLOR=sienna]_________________________________________________________________[/COLOR]
[COLOR=sienna]\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/[/COLOR]
[quote=ru5t]
интересует , как написать библиотеку процедур. Так , чтобы программа, которую пишу , могла бы подключать её и использовать подпрограммы, в ней определённые. Знаю метод совместной сборки из OBJ файлов , но он не представляется удобным.
[/quote]
Библиотека - это просто несколько объектных файлов, собранных вместе. Но по каким-то там причинам использование объектных файлов товарищу не представляется удобным (???)... Кстати откуда такая информация, что во включаемых файлах нельзя записывать подпрограммы, а можно только макросы? По-моему, это чистый бред...
Возможно вам стоит с ними познакомиться ;)
P.S. Прочитал первую страницу и ответил, а тут смотрю уже и без меня наставили на путь истинный :)
Почему же нельзя то?!
Как правильно заметил Phantom-84, ты немного не прав...
Вот пример:
Код:
.model tiny
.code
org 100h
start:
mov dx,offset logo
call print
ret
include procedur.asm
logo db "Hello world!$"
end start
.code
org 100h
start:
mov dx,offset logo
call print
ret
include procedur.asm
logo db "Hello world!$"
end start
А где procedur.asm:
Код:
print proc
push ax
mov ah,9
int 21h
pop ax
ret
print endp
push ax
mov ah,9
int 21h
pop ax
ret
print endp
Это всё прекрасно работает в TASM 5.0!
Подсказываю.
Формат файла:
ссылка на процедуру 1
...
ссылка на процедуру n
процедура 1
...
процедура n
Теперь составь несколько процедур, с помощью которых это можно использовать.
Это сложно, но можно реализовать.
И ещё придётся свой компоновщик (линкер) для этого писать.
Вопрос в другом - стоит ли овчинка выделки.
Если реализуешь это - нареку тебя Мастером!
P.S. Кстати, то, о чем ты говоришь, называется динамической компоновкой. В Windows подобная схема реализована. Читай Platform SDK: DLLs, Processes, and Threads: Dynamic-Link Library.
Platform SDK можно скачать с сайта Microsoft Corporation.
и ВСЁ!!!!!
это намного быстрее получается чем с lib и obj
А в чём вы пишете?
А в чём вы пишете?[/QUOTE]
В обезьяннике...
:)
:)[/quote]
Вообще то вопрос был в чём, а не [COLOR=red]где[/COLOR]:)
[quote=ant-str]В обезьяннике...
:)[/quote]
ЗЫ это чувствуется:rolleyes:
А в чём вы пишете?[/QUOTE]Чаще всего в валинках :D
А если серьезно, то на fasm'е я пишу в fasm-редакторе. Он простой, но все необходимое в нем есть. Меня уже достали все среды программирования с награмождением в себе всего того, что может иногда пригодиться, и даже того, что точно не пригодится никогда. Я даже на Дельфике и Сишнике в последнее время все чаще компилирую из командной строки, нежели из интегрированной среды.
ЗЫ Сколько здесь юмористов собралось.:) Прямо таки "Аншлаг" какой-то...
для компиляции использую bat файл
Это не юмор. По-русски писать надо. "А в чём вы пишете?" Ха. Ясли.
Ну... То, что ты "знаток" великого и могучего ты уже показал:D .
ЗЫ Полагаю, из всех IDE ты предпочитаешь notepad.exe:D
Вроде ничего Turbo Assembler Shell. Я все проги в нём пишу.
To k3Eahn для "Специалиста". Microsoft Visual Studio.
А для ассемблера тоже студию используешь?
Но я скажу тебе точно. Микрософтский компилятор си с параметром /O2 создаёт самый быстродействующий и компактный код.
А если надо какой-нибудь низкоуровневый код забабахать, то использую cl и ml в сочетании, а затем линкую их объектники подходящим линкером. А если бинарный формат нужен, то компоную собственным простейшим линкером. Хотя это можно сделать с помощью ld из пакета GNU/GCC.
Обычное поведение ньюбов - стрелять из пушки по воробьям.
[quote=ant-str]И компилятор си тоже микрософтский.
[/quote]
Это тот, который QuickC?:D
[quote=ant-str]
А если надо какой-нибудь низкоуровневый код забабахать, то использую cl и ml в сочетании[/quote]
Смотреть в начало поста:D
[quote=ant-str]
Микрософтский компилятор си с параметром /O2 создаёт самый быстродействующий и компактный код.
[/quote]
В сравнении с чем?
...в сравнении с кодом, созданным этим компилятором без параметра /O2, чего тут непонятного! :D
"Это тот, который QuickC?"
Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 14.00.50727.42 for 80x86
"В сравнении с чем?"
GNU Compilers Collection, Intel Optimized C++ Compiler
с аналогичными ключами (персонально для суперюмориста с ником Фантом-84)
Но Вам, ламерам с ламерского сайта, это ведь ни о чем не говорит...
Кстати, тема называется "Библиотека подпрограмм на TASM", а не "Какой IDE используют асм-ламеры-недоделки с буквой Е на груди"
РасшифрОФФка:Турбо Ассемблер SHell(сокр. от Super Hell)