Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как использовать строковые константы в asm..end?


Страницы:   1 2

Тыщ ©   (2009-01-14 20:26:00) 

Не работает ни так:

const mystring='my string';
asm
  push offset mystring
end.


ни так:

const mystring='my string';
asm
 push offset mystring
end.


Пишет 'String constant too long'.

Что компилятору надо, как дать понять, что я хочу адрес строки push'нуть?

Также не работают mov и lea.

Это в D7 и D10 (2005),
D5 на первый вариант генерирует какое-то случайное число,
а D3 вообще с internal error'ом валится.


oxffff   (2009-01-14 20:54:00) [21]

Еще вариант

asm
lea eax,@mystring;
mov eax,offset @mystring;
jmp @goout;
@Mystring:DB 'my string';
@goout:
end;


Тыщ   (2009-01-14 20:49:00) [22]

oxffff ©   (14.01.09 20:46) [3]

Этот вариант, конечно, лучше по генерации кода, но не буду же я вручную длину всех строк считать.


oxffff   (2009-01-14 20:47:00) [23]


> Тыщ ©   (14.01.09 20:46) [4]


Я знаю поэтому [3].


Тыщ   (2009-01-14 20:46:00) [24]

> oxffff ©   (14.01.09 20:41) [2]

Этот вариант и вариант с pchar пишет в секцию данных лишний dword, криво это...


oxffff   (2009-01-14 20:46:00) [25]

const mystring:array[1..9] of char='my string';

asm
lea eax,mystring;
end;


oxffff   (2009-01-14 20:41:00) [26]

const mystring: string='my string';

asm
mov eax,mystring;
end;


Тыщ   (2009-01-14 20:27:00) [27]

Опечатка: второй вариант без offset


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо