информационная безопасность
без паники и всерьез
 подробно о проектеRambler's Top100
Где водятся OGRыАтака на Internet
BugTraq.Ru
Русский BugTraq
 Анализ криптографических сетевых... 
 Модель надежности двухузлового... 
 Специальные марковские модели надежности... 
 Google заблокировала 2 с лишним... 
 Бэкдор в xz/liblzma, предназначенный... 
 Три миллиона электронных замков... 
главная обзор RSN блог библиотека закон бред форум dnet о проекте
bugtraq.ru / форум / programming
Имя Пароль
ФОРУМ
если вы видите этот текст, отключите в настройках форума использование JavaScript
регистрация





Легенда:
  новое сообщение
  закрытая нитка
  новое сообщение
  в закрытой нитке
  старое сообщение
  • Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
  • Новичкам также крайне полезно ознакомиться с данным документом.
Может, проще сделать ? 20.11.01 12:06  Число просмотров: 1030
Автор: Chingachguk <Chingachguk> Статус: Member
<"чистая" ссылка>
Если я правильно понял, есть довольно большая прога на asm и хочется что-то дергать из нее на pas ? Например, интерфейс или форматированный вывод ?

В этом случае есть такой вариант:

Все-таки делаешь свою прогу на asm в виде obj и подключаешь ее
к pas. Вызываешь ее основную процедуру из паса в самом начале программы (begin / external call / end.).
В asm - программе те ф-ции паса, которые тебе нужны, объявляешь в заголовке как extrn, например:
;...
extrn sound:far
extrn delay:far
extrn nosound:far
;...
;И вызываешь их в коде на asm(выдать звук):
; Sound(100);
push 100
call dword ptr Sound
; Delay(500);
push 500
call dword ptr Delay
; NoSound;
call dword ptr NoSound.
<programming>
[PAS&ASM]Объектный file из pas-процедур (obj-library). 17.11.01 20:52  
Автор: kar Статус: Незарегистрированный пользователь
<"чистая" ссылка>
такой трабл:
пишу прогу на асме,нужно подгрузить процедуры,написанные на пасе.

хотелось бы pas-progs скомпилить в obj.
это возможно?
Прога под Dos или Win? По моему нормально это сделать нельзя для BP 7.0 19.11.01 13:07  
Автор: Cyril <sc> Статус: Member
<"чистая" ссылка>
есть правда утилита binobj.exe
но это совсем не супер :(

В принципе в дельфях есть возможность генерить obj файлы,
но для дос это мало помогает.



нет я извиняюсь меня кто ваще видит? 19.11.01 12:23  
Автор: kar Статус: Незарегистрированный пользователь
<"чистая" ссылка>
> такой трабл:
> пишу прогу на асме,нужно подгрузить процедуры,написанные на
> пасе.
>
> хотелось бы pas-progs скомпилить в obj.
> это возможно?

hm...
Может, проще сделать ? 20.11.01 12:06  
Автор: Chingachguk <Chingachguk> Статус: Member
<"чистая" ссылка>
Если я правильно понял, есть довольно большая прога на asm и хочется что-то дергать из нее на pas ? Например, интерфейс или форматированный вывод ?

В этом случае есть такой вариант:

Все-таки делаешь свою прогу на asm в виде obj и подключаешь ее
к pas. Вызываешь ее основную процедуру из паса в самом начале программы (begin / external call / end.).
В asm - программе те ф-ции паса, которые тебе нужны, объявляешь в заголовке как extrn, например:
;...
extrn sound:far
extrn delay:far
extrn nosound:far
;...
;И вызываешь их в коде на asm(выдать звук):
; Sound(100);
push 100
call dword ptr Sound
; Delay(500);
push 500
call dword ptr Delay
; NoSound;
call dword ptr NoSound.
Может, проще сделать ? 20.11.01 20:29  
Автор: :-) <:-)> Статус: Elderman
<"чистая" ссылка>
[skipped]
> ;И вызываешь их в коде на asm(выдать звук):
> ; Sound(100);
> push 100
> call dword ptr Sound
> ; Delay(500);
> push 500
> call dword ptr Delay
> ; NoSound;
> call dword ptr NoSound.

Везде надо не dword ptr, а far ptr, или проcто call


.MODEL Large,Pascal

EXTRN Sound: FAR

.DATA
; put external data here
EXTRN i: Byte

.CODE
PUBLIC Init
Init PROC FAR
mov ax, 500
push ax
call Sound
ret
Init ENDP
END

в основном smile'y. 21.11.01 01:15  
Автор: kar Статус: Незарегистрированный пользователь
<"чистая" ссылка>
> Везде надо не dword ptr, а far ptr, или проcто call
>
>

> .MODEL Large,Pascal
>
> EXTRN Sound: FAR
>
> .DATA
> ; put external data here
> EXTRN i: Byte
>
> .CODE
> PUBLIC Init
> Init PROC FAR
> mov ax, 500
> push ax
> call Sound
> ret
> Init ENDP
> END

хотел вот уто4нить кое-4то:
1.здесь кажется нужно писать proc вместо far( EXTRN Sound:proc ),процедура
как никак.
2.4e за модель такая,pascal?;)
и главное:
.DATA
EXTRN i: Byte
.немножко непонял смысла этой записи...

в основном smile'y. 21.11.01 09:25  
Автор: :-) <:-)> Статус: Elderman
Отредактировано 21.11.01 09:27  Количество правок: 2
<"чистая" ссылка>
> хотел вот уто4нить кое-4то:
> 1.здесь кажется нужно писать proc вместо far( EXTRN
> Sound:proc ),процедура
> как никак.
нет, надо far

> 2.4e за модель такая,pascal?;)
это чтобы удобнее писать процедуры - не устанавливать самому фрейм
push bp
mov bp, sp
...
pop bp
это будет делаться автоматически. Параметры процедуры можно просто перечислить в ее заголовке:
PROC Init x:Byte, у:Byte
(не помню точный синтаксис)
и в процедуре обращаться к ним просто
mov al, x
а компилятор будет сам их адресовать относ. bp
В паскале объявить ее: procedure Init(x:Byte, y:Byte); Exterlnal;


> и главное:
> .DATA
> EXTRN i: Byte
> .немножко непонял смысла этой записи...

Тут надо объявлять переменные, объявленные в pas проге, к которым ты хочешь получить доступ из asm кода.
напр. если в Паскалевской проге объявлена
var
i: Byte;
то объявив ее
EXTRN i: Byte
можно обратиться к ней так:
mov i, 1
Thank$ all. 21.11.01 12:43  
Автор: kar Статус: Незарегистрированный пользователь
<"чистая" ссылка>
см выше
Я вижу 19.11.01 13:22  
Автор: :-) <:-)> Статус: Elderman
<"чистая" ссылка>
> > такой трабл:
> > пишу прогу на асме,нужно подгрузить
> процедуры,написанные на
> > пасе.
> >
> > хотелось бы pas-progs скомпилить в obj.
> > это возможно?
>
> hm...

Ты навероне под ДОС пишешь на Турбо Паскале? Турбо Паскаль .obj не делает :( Возможный вырианты:
1) писать основную прогу на pas и вызывать asm из нее
2) переписать pas-процедуры на C (pas2c тебе поможет)
3) найти компилятор Паскаля, делающий .obj (я таких не встречал)

З.Ы. Дельфи делает .obj, правда не помню какие - COFF или OMF
1




Rambler's Top100
Рейтинг@Mail.ru


  Copyright © 2001-2024 Dmitry Leonov   Page build time: 0 s   Design: Vadim Derkach