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

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

Как правильно читать запись в record ассемблерной функции? [D2005]


Страницы:   1 2 3

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]

Ты вот скажи - оно тебе зачеми приспичило ?)
Какой бонус ты хочешь получить, обращаясь из асм- , а не из Паскаль-кода ?


Страницы:   1 2 3

Наверх

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