Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.02.17;
Скачать: CL | DM;

Вниз

Правильный синтаксис inline asm   Найти похожие ветки 

 
evvcom   (2004-02-09 13:26) [0]

Есть

const
MyStrConst = "This string is const";


Что-то запарился эту константу (адрес) пихать в Inline assembly code в какой-нибудь регистр:

mov eax, MyStrConst // Error "String constant too long"
lea eax, MyStrConst // аналогично
mov eax, @MyStrConst // Error "Operand size mismatch"
lea eax, @MyStrConst // Error "Undeclared identifier: "@MyStrConst"


и так далее. DWORD PTR тоже не помогают. Что-то неправильно с синтаксисом, а Help на эту тему в Дельфи скудноватый.


 
Anatoly Podgoretsky ©   (2004-02-09 13:31) [1]

В регистр нужно адрес засылать, а у тебя его нет.


 
VMcL ©   (2004-02-09 13:35) [2]

>>evvcom (09.02.04 13:26)

const
MyStrConst: String {или PChar} = "This string is const";


 
Digitman ©   (2004-02-09 13:37) [3]

в Д5 при данной декларации MyStrConst обе нижеследующие строчки не вызывают ошибок компиляции :

mov eax, MyStrConst
lea eax, MyStrConst


 
evvcom   (2004-02-09 13:40) [4]

Я понимаю про адрес. Если мы этот MyStrConst будем пихать куда-либо в паскале, то компилятор этот MyStrConst разместит в памяти и подсунет куда надо адрес. Если только в inline asm компилятор ведет себя иначе, то тогда действительно адреса нет.

Действительно. Похоже так. Сделал:
var
MyStrConst: string = "This string is const";
asm
mov eax, MyStrConst // Ok
lea eax, MyStrConst // Тоже Ok
end;


Спасибо за внимание


 
evvcom   (2004-02-09 13:41) [5]

Во, уже настрочили ответов!
>> VMcL
Точно, и так вышло.
Еще раз спасибо.


 
Anatoly Podgoretsky ©   (2004-02-09 13:59) [6]

evvcom (09.02.04 13:40) [4]
На самом деле это литерал, который преобразовывается в
mov eax, "This string is const"
такое естественно не допустимо, кроме указаного можно еще следующее

Label:
db "This string is const"

Это если чисто в ассемблерном стиле, стоять может после любого JMP


 
VMcL ©   (2004-02-09 14:29) [7]

...или RET


 
AKul ©   (2004-02-09 14:37) [8]


> evvcom (09.02.04 13:26)
> Есть
>
> const
> MyStrConst = "This string is const";

Если Вы хотите записать куда-нибудь адрес этой строки, то для этого ее следует расместить в памяти, например, объявив так
const
MyStrConst:string = "This string is const";
или любым другим способом



Страницы: 1 вся ветка

Текущий архив: 2004.02.17;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.022 c
3-53384
_VaaL_
2004-01-27 12:30
2004.02.17
Передать BLOB (картинка) в ADOQuery


1-53501
Beat
2004-02-03 09:02
2004.02.17
глюк TRadioButton


3-53432
stud
2004-01-28 14:04
2004.02.17
IP подключенных к базе ользователей


1-53457
zamkom
2004-02-04 16:27
2004.02.17
Оптимизация кода.


7-53792
Alien
2003-11-29 10:19
2004.02.17
>>> Как программно расшарить папку? <<<