![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как правильно читать запись в record ассемблерной функции? [D2005]
yantux © (2010-01-13 15:34:00)type
mytype = record
a : integer; (* внутри ассемблерной функции это поле читается и пишется без проблем *)
b : array of array of extended; (* как читать и как писать в это поле внутри ассемлерной функции? *)
end;
procedure test1(var f : mytype) ; assembler;
asm
f.b[0,0];(* как правильно прочитать и правильно записать в это поле для кода с коммандами fpu? *)
end;
var
t : mytype;
begin
setlength(t,20,20);
test1(t);
end;
Anatoly Podgoretsky (2010-01-13 16:55:00) [41]> Сергей М. (13.01.2010 15:58:03) [3]
Вые, то есть показать насколько он продвинутый.
Сергей М. (2010-01-13 16:48:00) [42]К тогму же, если не ошибаюсь, в D2005 уже поддерживалась директива inline, так что накл.затраты на вызов асм-подпрограммы вообще отсутствуют, и нет никакого резона передавать ей весь массив для обработки
Сергей М. (2010-01-13 16:44:00) [43]
> во время перебора надо выполнять матоперации
Ну и выполняй их себе на здоровье над ОДНИМ эл-том массива, переданным в твою asm-функцию параметром)
Зачем там цикл-то нужен ?
Цикл обращения чтения/записи эл-тов массива пусть останется в вызывающей Паскаль- п/программе - для этого никакой FPU не нужен.
А оптимизированную FPU-обработку extended-параметра выноси в асм-функцию
> wait - надеюсь компилятор добавляет её не случайно?
Конечно не случайно)
Компилятор же не знает, какой CPU будет исполнять этот код..
Это запросто может быть и комплект из 386/387, в котором без WAIT, в отличие от современных CPU, не обойтись.
yantux (2010-01-13 16:32:00) [44]> Напиши на паскале все, что тебе надо,
> и посмотри в окне CPU, как тебя понял компилятор.
вижу команду wait - надеюсь компилятор добавляет её не случайно?
yantux (2010-01-13 16:31:00) [45]> К тому же как связан FPU с "перебором", по-твоему ? По-моему никак)
потому что во время перебора надо выполнять матоперации
Сергей М. (2010-01-13 16:12:00) [46]
> надеюсь повысить скорость перебора двумерного массива
Да не повысишь ты его при нулевых знаниях)
И при ненуливых ощутимо тоже не повысишь.
К тому же как связан FPU с "перебором", по-твоему ? По-моему никак)
yantux (2010-01-13 16:06:00) [47]>Ты вот скажи - оно тебе зачеми приспичило ?)
>Какой бонус ты хочешь получить, обращаясь из асм- , а не из Паскаль-кода ?
надеюсь повысить скорость перебора двумерного массива
Sha (2010-01-13 16:03:00) [48]Напиши на паскале все, что тебе надо,
и посмотри в окне CPU, как тебя понял компилятор.
Сергей М. (2010-01-13 15:58:00) [49]
> с коммандами fpu
Ты считаешь, что дельфийский компилятор напрочь игнорирует FPU, и поэтому решил писать асм-ф-цию ?
Игорь Шевченко (2010-01-13 15:57:00) [50]
> b : array of array of extended; (* как читать и как писать
> в это поле внутри ассемлерной функции? *)
а что, в system.pas не написана работа с динамическими массивами на ассемблере ?
Сергей М. (2010-01-13 15:55:00) [51]Ты вот скажи - оно тебе зачеми приспичило ?)
Какой бонус ты хочешь получить, обращаясь из асм- , а не из Паскаль-кода ?