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

Вниз

выравнивание 16 байт для SSE   Найти похожие ветки 

 
ZSOmega   (2005-10-03 08:21) [0]

Подскажите как выполнить выравнивание данных по границе 16 байт, для SSE


 
MBo ©   (2005-10-03 08:52) [1]

выделить чуть больше места, данные располагать с округленного вверх на 16 байт адреса. Например, такой набросок:

function GetMemPad16(ByteSize: Integer; var RealPtr: Pointer): Pointer;
begin
 GetMem(RealPtr, ByteSize * 16 + 15);
 Result := Pointer((DWord(RealPtr) + $F) and $FFFFFFF0);
end;

procedure TForm1.Button1Click(Sender: TObject);
type
 TDoubleArray = array[Word] of Double;
 PDoubleArray = ^TDoubleArray;
var
 PData: PDoubleArray;
 RealPtr: Pointer;
begin
 PData := GetMemPad16(256 * SizeOf(Double), RealPtr);
 Memo1.Lines.Add(IntToHex(DWord(RealPtr), 8));
 Memo1.Lines.Add(IntToHex(DWord(PData), 8));
 //.....PData[0]:=3.14;
 FreeMem(RealPtr);
end;


 
MBo ©   (2005-10-03 09:25) [2]

Пардон, ByteSize * 16 - не надо умножать, эта строчка, конечно, должна быть такой:

GetMem(RealPtr, ByteSize  + 15);



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

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

Наверх




Память: 0.47 MB
Время: 0.043 c
2-1140611437
denis24
2006-02-22 15:30
2006.03.12
Удаление контролов с формы в цикле


3-1137764603
UnDISCOvery
2006-01-20 16:43
2006.03.12
ADOConnection не отпускает БД Access после Close!


4-1135254028
ArtemESC
2005-12-22 15:20
2006.03.12
Как выйти в меню выбора пользователя?


15-1140202527
Shastox
2006-02-17 21:55
2006.03.12
Мысль о процессах


2-1140780704
Ландграф Павел
2006-02-24 14:31
2006.03.12
Получить из относительного пути абсолютный