Компьютерный форум
Правила
Вернуться   Компьютерный форум > Форум программистов > Языки программирования > Oberon
Перезагрузить страницу Как работать с asm-ом в Обероне
Ответ
 
Опции темы Опции просмотра
  (#1 (permalink)) Старый
DeepFinder DeepFinder вне форума
Member
 
Сообщений: 186
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 14.06.2004
По умолчанию Как работать с asm-ом в Обероне - 20.02.2005, 01:31

Господа, такой вопрос.

Каждый кто привык работать в Паскале, иногда любит использовать спец-фишки - включение асм-кода в исходник, что позволяет реализовать некоторые места программы очень эффективно.

Например, во Free-Pascal, я могу установить нужный VESA-режим и адресоваться к LFB напрямую, что позволяет молниеносно выводить графику (stosd).

Спрашивается, как в ЧЯ сгенерить видеопрерывание
Код:
  mov bx, Vmode
  mov ax, 4F02h
  int 10h

Из беглого просмотра документации по ЧЯ можно заключить, что он намертво привязан к масдаю и асму там делать нечего.
Ответить с цитированием
  (#2 (permalink)) Старый
DeepFinder DeepFinder вне форума
Member
 
Сообщений: 186
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 14.06.2004
По умолчанию Как работать с asm-ом в Обероне - 20.02.2005, 01:31

Господа, такой вопрос.

Каждый кто привык работать в Паскале, иногда любит использовать спец-фишки - включение асм-кода в исходник, что позволяет реализовать некоторые места программы очень эффективно.

Например, во Free-Pascal, я могу установить нужный VESA-режим и адресоваться к LFB напрямую, что позволяет молниеносно выводить графику (stosd).

Спрашивается, как в ЧЯ сгенерить видеопрерывание
Код:
  mov bx, Vmode
  mov ax, 4F02h
  int 10h

Из беглого просмотра документации по ЧЯ можно заключить, что он намертво привязан к масдаю и асму там делать нечего.
Ответить с цитированием
  (#3 (permalink)) Старый
S.Yu.Gubanov S.Yu.Gubanov вне форума
Member
 
Сообщений: 587
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 03.12.2002
По умолчанию Re: Как работать с asm-ом в Обероне - 21.02.2005, 11:10

Цитата:
Originally posted by DeepFinder
[b]и асму там делать нечего
Там "круче" чем asm. Там надо писать прямо машинные коды.

Help -> Platform-Specific Issues

Цитата:
Code procedures

Code procedures make it possible to use special code sequences not generated by the compiler. They are declared using the following special syntax:

ProcDecl = PROCEDURE "[" SysFlag "]" IdentDef [FormalPars]
[ConstExpr {"," ConstExpr}] ";".

The list of constants declared with the procedure is interpreted as a byte string and directly inserted in the code ("in-line") whenever the procedure is called. If a parameter list is supplied, the actual parameters are pushed on the stack from right to left. The first parameter however is kept in a register. If the type of the first parameter is REAL or SHORTREAL, it is stored in the top floating-point register. Otherwise the parameter (or in the case of a VAR/IN/OUT parameter its address) is loaded into EAX. For function procedures the result is also expected to be either in the top floating-point register or in EAX, depending on its type. Be careful when using registers in code procedures. In general, the registers ECX, EDX, ESI, and EDI may be used. Parameters on the stack must be removed by the procedure.

Examples

PROCEDURE [code] Sqrt (x: REAL): REAL (* Math.Sqrt *)
0D9H, 0FAH; (* FSQRT *)

PROCEDURE [code] Erase (adr, words: INTEGER) (* erase memory area *)
089H, 0C7H, (* MOV EDI, EAX *)
031H, 0C0H, (* XOR EAX, EAX *)
059H, (* POP ECX *)
0F2H, 0ABH; (* REP STOS *)
Ответить с цитированием
  (#4 (permalink)) Старый
S.Yu.Gubanov S.Yu.Gubanov вне форума
Member
 
Сообщений: 587
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 03.12.2002
По умолчанию Re: Как работать с asm-ом в Обероне - 21.02.2005, 11:10

Цитата:
Originally posted by DeepFinder
[b]и асму там делать нечего
Там "круче" чем asm. Там надо писать прямо машинные коды.

Help -> Platform-Specific Issues

Цитата:
Code procedures

Code procedures make it possible to use special code sequences not generated by the compiler. They are declared using the following special syntax:

ProcDecl = PROCEDURE "[" SysFlag "]" IdentDef [FormalPars]
[ConstExpr {"," ConstExpr}] ";".

The list of constants declared with the procedure is interpreted as a byte string and directly inserted in the code ("in-line") whenever the procedure is called. If a parameter list is supplied, the actual parameters are pushed on the stack from right to left. The first parameter however is kept in a register. If the type of the first parameter is REAL or SHORTREAL, it is stored in the top floating-point register. Otherwise the parameter (or in the case of a VAR/IN/OUT parameter its address) is loaded into EAX. For function procedures the result is also expected to be either in the top floating-point register or in EAX, depending on its type. Be careful when using registers in code procedures. In general, the registers ECX, EDX, ESI, and EDI may be used. Parameters on the stack must be removed by the procedure.

Examples

PROCEDURE [code] Sqrt (x: REAL): REAL (* Math.Sqrt *)
0D9H, 0FAH; (* FSQRT *)

PROCEDURE [code] Erase (adr, words: INTEGER) (* erase memory area *)
089H, 0C7H, (* MOV EDI, EAX *)
031H, 0C0H, (* XOR EAX, EAX *)
059H, (* POP ECX *)
0F2H, 0ABH; (* REP STOS *)
Ответить с цитированием
  (#5 (permalink)) Старый
DeepFinder DeepFinder вне форума
Member
 
Сообщений: 186
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 14.06.2004
По умолчанию Re: Как работать с asm-ом в Обероне - 22.02.2005, 08:01

Цитата:
Originally posted by S.Yu.Gubanov
[b]Там "круче" чем asm. Там надо писать прямо машинные коды.

Help -> Platform-Specific Issues
Инлайн он и в Африке инлайн

Тоесть использовать только относительные адреса и переходы, или придумывать что то вроде асма или линкера в рантайме

А как быть с софт-прерываниями скажем, видеобиоса
Код:
  int  10h
Ведь там кажись код должен работать в реальном режиме или V86.

Может можно как-то сгенерить Дос-прерывание в Обероне, ибо в разделе
Цитата:
Platform-Specific Issues (Windows)
о прерываниях ничего нет
Ответить с цитированием
Ads.
  (#6 (permalink)) Старый
DeepFinder DeepFinder вне форума
Member
 
Сообщений: 186
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 14.06.2004
По умолчанию Re: Как работать с asm-ом в Обероне - 22.02.2005, 08:01

Цитата:
Originally posted by S.Yu.Gubanov
[b]Там "круче" чем asm. Там надо писать прямо машинные коды.

Help -> Platform-Specific Issues
Инлайн он и в Африке инлайн

Тоесть использовать только относительные адреса и переходы, или придумывать что то вроде асма или линкера в рантайме

А как быть с софт-прерываниями скажем, видеобиоса
Код:
  int  10h
Ведь там кажись код должен работать в реальном режиме или V86.

Может можно как-то сгенерить Дос-прерывание в Обероне, ибо в разделе
Цитата:
Platform-Specific Issues (Windows)
о прерываниях ничего нет
Ответить с цитированием
  (#7 (permalink)) Старый
Ketmar Ketmar вне форума
Member
 
Сообщений: 14
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 22.02.2005
По умолчанию 22.02.2005, 08:03

поскольку перешли под винды, то дружно ЗАБЫЛИ о прерываниях времён дос. теперь это называется API и импортируется из DLL. см. любую умную книгу по программированию в виндах (того же Петзольда, для начала %-).
Ответить с цитированием
  (#8 (permalink)) Старый
Ketmar Ketmar вне форума
Member
 
Сообщений: 14
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 22.02.2005
По умолчанию 22.02.2005, 08:03

поскольку перешли под винды, то дружно ЗАБЫЛИ о прерываниях времён дос. теперь это называется API и импортируется из DLL. см. любую умную книгу по программированию в виндах (того же Петзольда, для начала %-).
Ответить с цитированием
  (#9 (permalink)) Старый
DeepFinder DeepFinder вне форума
Member
 
Сообщений: 186
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 14.06.2004
По умолчанию 24.02.2005, 06:08

Цитата:
Originally posted by Ketmar
[b]поскольку перешли под винды, то дружно ЗАБЫЛИ о прерываниях времён дос. теперь это называется API и импортируется из DLL. см. любую умную книгу по программированию в виндах (того же Петзольда, для начала %-).
Ну, блин, пробило

Ага! Ну конечно! Везде рулит масдай, а сер Билли, которого все не любили, и его контора самые лучшие программисты в мире, которые пишут самые надёжные, быстрые и непрожёрливые программы :!:
И вообще, будущее опирается на индусов.
LOL :!:

И кто это Вам сказал, что перешли под масдай
А ЗАБЫВАТЬ то рановато. Масдай скорее ножки откинет, нежели пересилит программу защищённого режима Дос.

Хе... , и с каких это пор масдай перестал поддерживать спецификацию DPMI

И как это прерывания времён ДОС, сейчас можно назвать Интерфейсом Разработки Приложений

А вызвать прерывание из DLL можно из безо всяких API.

Например, компилируем под ФриПаскалем DLL-ку, работающую с прерываниями и подключаем к Оберону.

А вопрос то был простой: как сгенерить Дос-прерывание в Обероне?

Ладно, ЧЯ, ИМХО, намертво прикручен к масдаю.

Так бы и сказали сразу, нет средств взаимодействия с аппаратурой мимо машинного кода или масдая.

А нам и без Петзольда хорошо, сила в алгоритмах, а не в масдае
Ответить с цитированием
  (#10 (permalink)) Старый
DeepFinder DeepFinder вне форума
Member
 
Сообщений: 186
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 14.06.2004
По умолчанию 24.02.2005, 06:08

Цитата:
Originally posted by Ketmar
[b]поскольку перешли под винды, то дружно ЗАБЫЛИ о прерываниях времён дос. теперь это называется API и импортируется из DLL. см. любую умную книгу по программированию в виндах (того же Петзольда, для начала %-).
Ну, блин, пробило

Ага! Ну конечно! Везде рулит масдай, а сер Билли, которого все не любили, и его контора самые лучшие программисты в мире, которые пишут самые надёжные, быстрые и непрожёрливые программы :!:
И вообще, будущее опирается на индусов.
LOL :!:

И кто это Вам сказал, что перешли под масдай
А ЗАБЫВАТЬ то рановато. Масдай скорее ножки откинет, нежели пересилит программу защищённого режима Дос.

Хе... , и с каких это пор масдай перестал поддерживать спецификацию DPMI

И как это прерывания времён ДОС, сейчас можно назвать Интерфейсом Разработки Приложений

А вызвать прерывание из DLL можно из безо всяких API.

Например, компилируем под ФриПаскалем DLL-ку, работающую с прерываниями и подключаем к Оберону.

А вопрос то был простой: как сгенерить Дос-прерывание в Обероне?

Ладно, ЧЯ, ИМХО, намертво прикручен к масдаю.

Так бы и сказали сразу, нет средств взаимодействия с аппаратурой мимо машинного кода или масдая.

А нам и без Петзольда хорошо, сила в алгоритмах, а не в масдае
Ответить с цитированием
Ads
Ответ

Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
3D в C# как с ним работать vilza .NET 1 29.05.2008 13:47
Как работать с ООП из DLL AbLaZe Visual C++ 9 10.11.2007 21:53
как работать с GTK+ 2.0 sq-Weezee C++ на Unix 0 23.05.2007 21:09
АОП как с ним работать Alex437 Мысли вслух 1 14.11.2005 14:48
Можно ли в Обероне и ББ в частности сделать полностью свои окна и контролы Крыс Oberon 2 02.11.2005 18:25
Можно ли использовать COM объекты в обероне Phinc Oberon 2 23.03.2005 18:50
Xml в c# как с ним работать strashok .NET 4 09.03.2005 16:17
В чем логика функций MOD и DIV в Обероне kesha Oberon 5 18.10.2004 18:40
S.M.A.R.T. как с ним работать Exploder Железо. Написание драйверов 1 15.07.2004 22:49
Как работать с gtk+ Alphex C++ на Unix 4 21.02.2004 23:48
Как работать с BDE Vladimir the Red Sunny Другие СУБД 0 07.10.2003 17:45
как работать с MDI bassbuster C++ Builder 12 01.09.2003 12:14



Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2021, Jelsoft Enterprises Ltd.
Нardforum.ru - компьютерный форум и программирование, форум программистов