Легенда:
новое сообщение
закрытая нитка
новое сообщение
в закрытой нитке
старое сообщение
|
- Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
- Новичкам также крайне полезно ознакомиться с данным документом.
| | | | | |
Thank$ all. 21.11.01 12:43 Число просмотров: 1061
Автор: kar Статус: Незарегистрированный пользователь
|
см выше
|
<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
|
|
|