![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Регистрация: 15.10.2007
Сообщений: 5
|
![]()
Подскажите где найти инфу (или скажите так если знаете) как правильно передавать параметры и получать результаты в stdcall и pascal вызовах. И в догонку, если не сложно, поясните как в Delphi если первый/второй..... параметр - это строка, получить её длину? какое смещение указателя брать?
|
![]() |
![]() |
![]() |
#2 |
добрый няша
Старожил
Регистрация: 29.10.2006
Сообщений: 4,804
|
![]()
результаты всегда в eax
1. Директива pascal определяет "паскальный" вызов подпрограммы (он стоит по умолчанию во всех процедурах и функциях): а именно параметры пихаются в стек в прямом порядке, но стек нормализует ВЫЗЫВАЕМЫЙ. 2. Директива cdecl (C declaration) определяет "сишный" вызов подпрограммы: а именно параметры пихаются в стек в обратном порядке, но стек нормализует ВЫЗЫВАЮЩИЙ (путаница какая-то, неправда ли?). 3. Директива stdcall (Standart calling) определяет стандартный вызов всех продпрограмм всех библиотек WINDOWS: параметры пихаются в стек в обратном порядке, но стек нормализует ВЫЗЫВАЕМЫЙ. Это есть синтез двух видов вызовов. получение длины ZS строки (оканчивается нулём) FASM Код:
|
![]() |
![]() |
![]() |
#3 |
Регистрация: 15.10.2007
Сообщений: 5
|
![]()
Пасибки бальшое. Чёртичо. понамутили а ты сиди разбирайся ))
|
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Перехват системных вызовов Windows | Irat | Помощь студентам | 1 | 04.02.2008 16:30 |
способы работы с Б.Д. | Ванька | БД в Delphi | 1 | 20.11.2007 22:12 |
способы создания баз | Ванька | БД в Delphi | 2 | 20.11.2007 12:42 |
Способы ведения файла-лога | Norfolk | Общие вопросы Delphi | 2 | 14.06.2007 20:47 |