powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Быстрая замена символа
9 сообщений из 259, страница 11 из 11
Быстрая замена символа
    #39680737
Гирлионайльдо
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Глупая идея была. Пересобрал. По прежнему NativeInt(@s[1]) and 15 выдаёт 12

Все asm функции потеряли получение длины, по offset -4
...
Рейтинг: 0 / 0
Быстрая замена символа
    #39680746
Гирлионайльдо
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я глянул, нигде не используется _Padding

Сделал так
Код: pascal
1.
2.
3.
4.
5.
6.
7.
  StrRec = packed record
    codePage: Word;
    elemSize: Word;
    refCnt: Integer;
    length: Integer;
    _Padding: Integer; // Make 16 byte align for payload..
  end;



В getmem.inc так же

Аналогично
Код: pascal
1.
2.
3.
4.
5.
  TDynArrayRec = packed record
    RefCnt: Integer;
    Length: NativeInt;
    _Padding: Integer; // Make 16 byte align for payload..
  end;




Длина заработала. А выравнивание нету. Такого же как и для 64 bit
...
Рейтинг: 0 / 0
Быстрая замена символа
    #39680756
Aleksandr Sharahov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гирлионайльдо,

думаю, первая попытка была верной, надо внимательней пройтись по CPU64BITS
...
Рейтинг: 0 / 0
Быстрая замена символа
    #39680759
Гирлионайльдо
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А почему embarcadero такие му**ки? И не могут сделать, сборку всех исходников из исходников.
И исключить все не возможные dcu для сборки?


Все их исходники пересобираются через source\rtl\BuildWinRTL.dproj
...
Рейтинг: 0 / 0
Быстрая замена символа
    #39680761
Гирлионайльдо
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Aleksandr Sharahov,

Не знаю, выравнивания нету никакого. Не знаю почему, всё время 12. Уже всё перетыкал. Другие участки возможные
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
const
  // Using an initialized _AnsiStr to be sure of alignement
  // and so that it is read only.
  // Note: This const assumes a little endian machine.
  EmptyStringA: _AnsiStr =
{$IFDEF CPU64BITS}
  #$00#$00#$00#$00 +  // Padding, data is 16 byte aligned
{$ENDIF}
  #$FF#$FF +          // codePage := FFFF;
  #$01#$00 +          // elemSize := 1;
  #$FF#$FF#$FF#$FF +  // refCnt := -1;
  #$00#$00#$00#$00 +  // length := 0;
  #$00#$00;           // Data   := nil;

  EmptyStringW: _AnsiStr =
{$IFDEF CPU64BITS}
  #$00#$00#$00#$00 +  // Padding, data is 16 byte aligned
{$ENDIF}
  #$FF#$FF +          // codePage := FFFF;
  #$02#$00 +          // elemSize := 2;
  #$FF#$FF#$FF#$FF +  // refCnt := -1;
  #$00#$00#$00#$00 +  // length := 0;
  #$00#$00;           // Data   := nil;



Я трогать не стал. Мб может и в них дела. А может и не в них
...
Рейтинг: 0 / 0
Быстрая замена символа
    #39680774
Гирлионайльдо
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Короче то, что не работала - это моя жопо рукость. Ибо он собирал по пути
Documents\Embarcadero\Studio\19.0\lib\Win32

Заменив файлики. Я увидел результат
...
Рейтинг: 0 / 0
Быстрая замена символа
    #39680776
Aleksandr Sharahov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ГирлионайльдоAleksandr Sharahov,

Не знаю, выравнивания нету никакого. Не знаю почему, всё время 12. Уже всё перетыкал. Другие участки возможные
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
const
  // Using an initialized _AnsiStr to be sure of alignement
  // and so that it is read only.
  // Note: This const assumes a little endian machine.
  EmptyStringA: _AnsiStr =
{$IFDEF CPU64BITS}
  #$00#$00#$00#$00 +  // Padding, data is 16 byte aligned
{$ENDIF}
  #$FF#$FF +          // codePage := FFFF;
  #$01#$00 +          // elemSize := 1;
  #$FF#$FF#$FF#$FF +  // refCnt := -1;
  #$00#$00#$00#$00 +  // length := 0;
  #$00#$00;           // Data   := nil;

  EmptyStringW: _AnsiStr =
{$IFDEF CPU64BITS}
  #$00#$00#$00#$00 +  // Padding, data is 16 byte aligned
{$ENDIF}
  #$FF#$FF +          // codePage := FFFF;
  #$02#$00 +          // elemSize := 2;
  #$FF#$FF#$FF#$FF +  // refCnt := -1;
  #$00#$00#$00#$00 +  // length := 0;
  #$00#$00;           // Data   := nil;



Я трогать не стал. Мб может и в них дела. А может и не в них

как я понимаю, этот код относится к строковым константам,
тогда имеет смысл тут тоже раскомментировать,
+ проверить выравнивание констант
...
Рейтинг: 0 / 0
Быстрая замена символа
    #39680777
alekcvp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Aleksandr Sharahov1. одинаковая скорость movdqu и movdqa на выровненных данных
2. падение скорости на 10% у movdqu на невыровненных данных
Если данные выровнены, то можно сравнивать образец сразу с памятью, без загрузки в регистр. Но в случае именно замены символа там код сильно усложнится и это усложнение может съесть весь выигрыш. А вот при сравнении строк - это ускоряет немного.
...
Рейтинг: 0 / 0
Быстрая замена символа
    #39681280
чччД__
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Up!
...
Рейтинг: 0 / 0
9 сообщений из 259, страница 11 из 11
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Быстрая замена символа
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]