Форум: "Основная";
Текущий архив: 2004.02.17;
Скачать: [xml.tar.bz2];
ВнизПравильный синтаксис 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;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.007 c