![]() |
|
|
![]()
|
|
| Zealot |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 13 Регистрация: 23.10.2005 Репутация: нет Всего: нет |
Доброго времени суток, уважаемые программисты!
Я хочу задать вам вопрос, который вам, возможно, покажется тривиальным: используя асм в языках высшего уровня (pascal, C++, etc.) у меня возникла проблема: если есть процедура, например, procedure MyProc(a, b, c, d: real); stdcall; с параметрами типа real (8 байт, число с плавающей запятой) и мне нужно её вызвать из встроенного асма, то я пишу /например/: asm push 0.0 push 1.35 push 45.0 push 0.0 call MyProc end то возникает проблема: я передаю в стэк 16 байт, а процедура запрашивает 32! Далее классические виндовские ошибки в духе access violation и т. д. если делаю так: asm push 0 push 0.0 push 0 push 1.35 push 0 push 45.0 push 0 push 0.0 call MyProc end то всё прекрасно, в стэке 32 байта. Вроде всё OK, но, ставлю бряки в теле процедуры, и вижу, что процедура приняла не те значения! Подскажите пожалуста, как передать в стэк числа с плавающей запятой! P. S. и ещё, вопрос на засыпку: как определить, какого типа данные в регистре? (byte, char, real, etc.) заранее благодарю, Zealot |
|||
|
||||
| oleg1973 |
|
|||
![]() asm fanat ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 3283 Регистрация: 16.7.2003 Где: Italy Репутация: нет Всего: 34 |
а может компилер просто не понимает что 45.0 есть число с точкой?
никак ) все зависит от "интерпритации" к примеру , AL=0х65 это может быть или просто число или символ ascii "A" ) -------------------- SST 465555 icq 200-512-712 |
|||
|
||||
| e-moe |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 88 Регистрация: 3.8.2004 Где: Украина, Донецк Репутация: нет Всего: 4 |
Ассемблер кодирует вещественные числа не так как Паскаль.
из-за этого может быть ошибка. В ВР/ТР real выглядит так:
+ прочти статейку про Асм + паскаль на моем сайте http://labinskiy.googlepages.com/ (рекомендую старую версию статьи) |
|||
|
||||
![]()
|
| Правила форума "Asm для начинающих" | |
|
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, MAKCim. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Asm для начинающих | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |