Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 19.02.2012, 17:06   #1
Smogg
Участник клуба
 
Регистрация: 14.06.2011
Сообщений: 1,138
По умолчанию объясните копипасту Assemblerа в Delphi

Вот есть такой кусочек копипастного кода:

Код:
function StrEnd(const Str: PChar): PChar; assembler;
asm
  mov edx, edi
  mov edi, eax
  mov ecx, 0FFFFFFFFh
  xor al, al
  repne scasb
  lea eax, [edi-1]
  mov edi, edx
end;
Три вопроса по поводу:

1. Как передается значение переменной Str внутрь функции, в какой регистр она записывается - edx, edi или еще куда?

2. В каком регистре оказывается результат работы функции, который она возвращает?

3. И тупой вопрос, который мне лень выискивать в справках, ну да уж до кучи: что значит const внутри скобок перед Str: Pchar? Тоесь, понятно, что это константа, которую нельзя изменять, но смысл то в том, чтобы специально описывать передаваемую переменную именно как константу? Достаточно ж просто не трогать ее и она останется такой же, какой и была.

Последний раз редактировалось Smogg; 19.02.2012 в 17:34.
Smogg вне форума Ответить с цитированием
Старый 19.02.2012, 22:14   #2
Somebody
Участник клуба
 
Регистрация: 08.10.2007
Сообщений: 1,185
По умолчанию

1. eax, см. http://en.wikipedia.org/wiki/X86_cal...rland_fastcall
2. eax
3. Вообще так константу нельзя передать как не-const параметр, а как const можно. Допустим, если функция принимает массив в качестве параметра, а ей надо передать массив-константу. В Delphi с const как-то мутно всё, в C++, по-моему, более логично. В данном случае вообще получается, что const относится к указателю, а не к строке, на которую указывает.
Somebody вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Объясните кто-нибудь код ASSEMBLERа Steil Помощь студентам 5 16.05.2010 09:10
Объясните задачу (Delphi) Sianessa Помощь студентам 26 06.04.2009 01:06
Задача в Delphi. Объясните смысл! Sianessa Помощь студентам 13 31.03.2009 22:11
Объясните delphi (inc) Neymexa Помощь студентам 5 27.01.2009 16:30
Бд в Delphi,объясните плиз RamireZ БД в Delphi 1 21.10.2008 23:58