powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / int64 и перечисление в структуре
70 сообщений из 70, показаны все 3 страниц
int64 и перечисление в структуре
    #39466233
Няшик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Столкнулся с тем что, данный код с переменной типом int64 работает за 13.74 сек (в простом inc несколько миллионов раз)

1)
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
  TSPHPValue = packed record
    _Type: TEngineVarTypes;

    TInt64: Int64;

    case Byte of
      0:
        (TInteger: IntPtr);
      1:
        (TSingle: Single);
      2:
        (TDouble: Double);
      3:
        (TExtended: Extended);
      4:
        (TCurrency: Currency);
      5:
        (TPointer: Pointer);
      6:
        (TBoxArray: PBoxArray);
  end;



2)
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
  TSPHPValue = packed record
    _Type: TEngineVarTypes;

    case Byte of
      0:
        (TInt64: Int64);
      1:
        (TInteger: IntPtr);
      2:
        (TSingle: Single);
      3:
        (TDouble: Double);
      4:
        (TExtended: Extended);
      5:
        (TCurrency: Currency);
      6:
        (TPointer: Pointer);
      7:
        (TBoxArray: PBoxArray);
  end;




А если написать вот так, то та же самая операция занимает 3.64 секунды

Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
  TSPHPValue = packed record
    // Танец с бубнами АлАлей - гоп!
    TInt64: Int64;

    // Дальше покуем от типа
    _Type: TEngineVarTypes;


    // Таблица типов

    case Byte of
      0:
        (TInteger: IntPtr);
      1:
        (TSingle: Single);
      2:
        (TDouble: Double);
      3:
        (TExtended: Extended);
      4:
        (TCurrency: Currency);
      5:
        (TPointer: Pointer);
      6:
        (TBoxArray: PBoxArray);
  end;




Из за чего такая проблема ? Просады в 3.8 раза

Гиф демонстрация


...
Рейтинг: 0 / 0
int64 и перечисление в структуре
    #39466239
Няшик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кстати, все оптимизации дебагера включены были, от первого создания проекта. И никак они не влияют на сам проект..

Для тех кто хочет высказать - используй стандартный контейнер вроде TValue или стандартный Variant то придержите при себе такое.

Им мечтать и мечтать о тех производительности что у меня есть

PHP 7.1.5 - 41.123138 сек

SPHP - 3.234138 сек.
...
Рейтинг: 0 / 0
int64 и перечисление в структуре
    #39466247
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Выравнивание?
...
Рейтинг: 0 / 0
int64 и перечисление в структуре
    #39466253
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
НяшикИз за чего такая проблема ?

Из-за packed.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
int64 и перечисление в структуре
    #39466254
Няшик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_Vasilisk_Выравнивание?

Я тоже так подумал, но убрав packed ничего не изменилось. Возможно из за того что Delphi автоматом пакует для int64 такую структуру, для поддержки на 32 битных платформах

Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
  Int64Rec = packed record
    case Integer of
      0:
        (Lo, Hi: Cardinal);
      1:
        (Cardinals: array [0 .. 1] of Cardinal);
      2:
        (Words: array [0 .. 3] of Word);
      3:
        (Bytes: array [0 .. 7] of Byte);
  end;
...
Рейтинг: 0 / 0
int64 и перечисление в структуре
    #39466261
rgreat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Зачем путь замазал?

Его уже до этого в гиф-ке все прекрасно рассмотрели.
...
Рейтинг: 0 / 0
int64 и перечисление в структуре
    #39466262
Няшик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rgreatЗачем путь замазал?

Его уже до этого в гиф-ке все прекрасно рассмотрели.

Да замазывал для другого источника =) На гифке было лень, решил не парится.
...
Рейтинг: 0 / 0
int64 и перечисление в структуре
    #39466263
Kazantsev Alexey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
НяшикИз за чего такая проблема ? Просады в 3.8 раза
Я проверил на своей виртуалке с XE2. В обоих вариантах ~800 msec.
...
Рейтинг: 0 / 0
int64 и перечисление в структуре
    #39466264
Kazantsev Alexey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Kazantsev AlexeyВ обоих вариантах ~800 msec
С ноликом ошибся, но результат всё равно идентичен. Время ~8 сек.
...
Рейтинг: 0 / 0
int64 и перечисление в структуре
    #39466265
Bred eFeM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Няшик, асм демонстрацию давай.
...
Рейтинг: 0 / 0
int64 и перечисление в структуре
    #39466267
Няшик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Kazantsev AlexeyНяшикИз за чего такая проблема ? Просады в 3.8 раза
Я проверил на своей виртуалке с XE2. В обоих вариантах ~800 msec.

Странно что у меня такие проблемы случились.. Возможно архитектура процессора, или ещё чего виновата. Я в ассемблерной отладке зелень конечно. По этому и написал тут... В общем, если это никак не решается для меня, то оставлю как есть.
...
Рейтинг: 0 / 0
int64 и перечисление в структуре
    #39466268
Няшик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Bred eFeMНяшик, асм демонстрацию давай.

А как её для структуры получить? Для inc то ничего особенного совершенно - двух случаях один и тот же код
...
Рейтинг: 0 / 0
int64 и перечисление в структуре
    #39466269
Kazantsev Alexey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
НяшикСтранно что у меня такие проблемы случились..
А версия дельфей какая?
...
Рейтинг: 0 / 0
int64 и перечисление в структуре
    #39466270
Няшик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Kazantsev AlexeyНяшикСтранно что у меня такие проблемы случились..
А версия дельфей какая?


berlin. На всякий случай приведу, что в двух случаях на гифке получается.

Вполне, одинаковый код, с учётом того что элемент идёт вторым, то естественно на 1 будет больше его индекс

Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
MyPHP.dpr.57: inc(t.TInt64, i);
005E0585 8BC3             mov eax,ebx
005E0587 99               cdq 
005E0588 0106             add [esi],eax
005E058A 115604           adc [esi+$04],edx


MyPHP.dpr.57: inc(t.TInt64, i);
005E0586 8BC3             mov eax,ebx
005E0588 99               cdq 
005E0589 014601           add [esi+$01],eax
005E058C 115605           adc [esi+$05],edx
...
Рейтинг: 0 / 0
int64 и перечисление в структуре
    #39466273
SOFT FOR YOU
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Няшик,

Дело в выравнивании. Причём скорее всего на границе двух линеек
...
Рейтинг: 0 / 0
int64 и перечисление в структуре
    #39466277
Kazantsev Alexey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Няшикberlin
На голом проекте разница действительно есть. 3 секунды против 8. Проверил и на берлине и на XE2.
...
Рейтинг: 0 / 0
int64 и перечисление в структуре
    #39466344
Фотография makhaon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как ни удивительно, но такие, на первый взгляд, монструозные конструкции, как
Int64Rec могут компилироваться в несколько ассемблерных команд. Если занимаешься скоростным кодингом, стоит с ассеблером разобраться ;)
...
Рейтинг: 0 / 0
int64 и перечисление в структуре
    #39466350
SOFT FOR YOU
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Kazantsev AlexeyНяшикberlin
На голом проекте разница действительно есть. 3 секунды против 8. Проверил и на берлине и на XE2.

А чему равно esi?
...
Рейтинг: 0 / 0
int64 и перечисление в структуре
    #39466413
jmp_original
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
SOFT FOR YOUА чему равно esi?
SOFT, даже ежу понятно, что ESI в всегда кратно по крайней мере 8 (или 16).
И ему же понятно, что - да - дело в выравнивании.

И вот в это
НяшикЯ тоже так подумал, но убрав packed ничего не изменилось
я не верю. (Либо у него в настройках проекта включено выравнивание по байтам.)
...
Рейтинг: 0 / 0
int64 и перечисление в структуре
    #39466461
Няшик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
jmp_originalя не верю. (Либо у него в настройках проекта включено выравнивание по байтам.)

...
Рейтинг: 0 / 0
int64 и перечисление в структуре
    #39466472
Няшик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SOFT FOR YOUKazantsev Alexeyпропущено...

На голом проекте разница действительно есть. 3 секунды против 8. Проверил и на берлине и на XE2.

А чему равно esi?

Переменной

Код: pascal
1.
005E054B BE28D16000       mov esi,$0060d128



... А вот что ниже, мне не совсем понятно. Но в двух случаях одинаково

Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
t:
0060D128 0000             add [eax],al
0060D12A 0000             add [eax],al
0060D12C 0000             add [eax],al
0060D12E 0000             add [eax],al
0060D130 0000             add [eax],al
0060D132 0000             add [eax],al
0060D134 0000             add [eax],al
0060D136 0000             add [eax],al
0060D138 0000             add [eax],al
0060D13A 0000             add [eax],al
0060D13C 0000             add [eax],al
0060D13E 0000             add [eax],al
0060D140 0000             add [eax],al
0060D142 0000             add [eax],al
0060D144 0000             add [eax],al
0060D146 0000             add [eax],al
...
Рейтинг: 0 / 0
int64 и перечисление в структуре
    #39466478
schi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
НяшикДля тех кто хочет высказать - используй стандартный контейнер вроде TValue или стандартный Variant то придержите при себе такое.

Им мечтать и мечтать о тех производительности что у меня есть


"Смысла в наших манипуляциях было столько же, сколько в тщательном определении ширины шага у старого мерина, которого ведут на живодерню. "

Когда же эти оптимизаторы уймутся!
...
Рейтинг: 0 / 0
int64 и перечисление в структуре
    #39466481
Фотография defecator
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Няшик
... А вот что ниже, мне не совсем понятно. Но в двух случаях одинаково

Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
t:
0060D128 0000             add [eax],al
0060D12A 0000             add [eax],al
0060D12C 0000             add [eax],al
0060D12E 0000             add [eax],al
0060D130 0000             add [eax],al
0060D132 0000             add [eax],al
0060D134 0000             add [eax],al
0060D136 0000             add [eax],al
0060D138 0000             add [eax],al
0060D13A 0000             add [eax],al
0060D13C 0000             add [eax],al
0060D13E 0000             add [eax],al
0060D140 0000             add [eax],al
0060D142 0000             add [eax],al
0060D144 0000             add [eax],al
0060D146 0000             add [eax],al



это просто нули
...
Рейтинг: 0 / 0
int64 и перечисление в структуре
    #39466500
Няшик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
schiНяшикДля тех кто хочет высказать - используй стандартный контейнер вроде TValue или стандартный Variant то придержите при себе такое.

Им мечтать и мечтать о тех производительности что у меня есть


"Смысла в наших манипуляциях было столько же, сколько в тщательном определении ширины шага у старого мерина, которого ведут на живодерню. "

Когда же эти оптимизаторы уймутся!

Ну вообще - то, он вон чего умеет - за столь короткое время. Притом мой интерпретатор даёт точно такую же скорость при использования (Оно и логично, по опкодом прыгать)
...
Рейтинг: 0 / 0
int64 и перечисление в структуре
    #39466506
Няшик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
defecatorНяшик... А вот что ниже, мне не совсем понятно. Но в двух случаях одинаково

Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
t:
0060D128 0000             add [eax],al
0060D12A 0000             add [eax],al
0060D12C 0000             add [eax],al
0060D12E 0000             add [eax],al
0060D130 0000             add [eax],al
0060D132 0000             add [eax],al
0060D134 0000             add [eax],al
0060D136 0000             add [eax],al
0060D138 0000             add [eax],al
0060D13A 0000             add [eax],al
0060D13C 0000             add [eax],al
0060D13E 0000             add [eax],al
0060D140 0000             add [eax],al
0060D142 0000             add [eax],al
0060D144 0000             add [eax],al
0060D146 0000             add [eax],al



это просто нули


Да! Точно. От скрина выше вот что получилось

Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
t:
0060C128 0200             add al,[eax]
0060C12A 0000             add [eax],al
0060C12C 0000             add [eax],al
0060C12E 0000             add [eax],al
0060C130 019BE4B5595B     add [ebx+$5b59b5e4],ebx
0060C136 F006             lock push es
0060C138 0000             add [eax],al
0060C13A 0000             add [eax],al
0060C13C 0000             add [eax],al
0060C13E 0000             add [eax],al
0060C140 0000             add [eax],al
0060C142 0000             add [eax],al
0060C144 0000             add [eax],al
0060C146 0000             add [eax],al
...
Рейтинг: 0 / 0
int64 и перечисление в структуре
    #39466525
Kazantsev Alexey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SOFT FOR YOUА чему равно esi?
А он не участвует (XE2):
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
//    TInt64: Int64;
//    _Type: Byte;
Project1.dpr.42: inc(phpv.TInt64, index);
004050DB A1B09B4000       mov eax,[$00409bb0]
004050E0 99               cdq
004050E1 01059C9B4000     add [$00409b9c],eax
004050E7 1115A09B4000     adc [$00409ba0],edx

//    _Type: Byte;
//    TInt64: Int64;
Project1.dpr.43: inc(phpv.TInt64, index);
004050DB A1B09B4000       mov eax,[$00409bb0]
004050E0 99               cdq
004050E1 01059D9B4000     add [$00409b9d],eax
004050E7 1115A19B4000     adc [$00409ba1],edx



Вот асм XE2, для которого результаты были одинаковыми (8 сек):
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
//    TInt64: Int64;
//    _Type: Byte;
Test.All.pas.239: inc(phpv.TInt64, index);
005C135C 8BC3             mov eax,ebx
005C135E 99               cdq 
005C135F 01459D           add [ebp-$63],eax
005C1362 1155A1           adc [ebp-$5f],edx

//    _Type: Byte;
//    TInt64: Int64;
Test.All.pas.239: inc(phpv.TInt64, index);
005E9D34 8BC3             mov eax,ebx
005E9D36 99               cdq 
005E9D37 01459E           add [ebp-$62],eax
005E9D3A 1155A2           adc [ebp-$5e],edx
...
Рейтинг: 0 / 0
int64 и перечисление в структуре
    #39466599
schi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Няшикschiпропущено...


"Смысла в наших манипуляциях было столько же, сколько в тщательном определении ширины шага у старого мерина, которого ведут на живодерню. "

Когда же эти оптимизаторы уймутся!

Ну вообще - то, он вон чего умеет - за столь короткое время. Притом мой интерпретатор даёт точно такую же скорость при использования (Оно и логично, по опкодом прыгать)

Я очень извиняюсь, а зачем и кому оно надо - пустой цикл даже за столь короткое время ?
...
Рейтинг: 0 / 0
int64 и перечисление в структуре
    #39466638
SOFT FOR YOU
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Kazantsev Alexey,

Судя по коду Няшика, esi равен $0060d128
Получается смещение 40 в линейке
Тогда независимо от варианта инкремента, коллизии линеек нет
Тогда в чем дело?
...
Рейтинг: 0 / 0
int64 и перечисление в структуре
    #39466641
Няшик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
schiНяшикпропущено...


Ну вообще - то, он вон чего умеет - за столь короткое время. Притом мой интерпретатор даёт точно такую же скорость при использования (Оно и логично, по опкодом прыгать)

Я очень извиняюсь, а зачем и кому оно надо - пустой цикл даже за столь короткое время ?

Никому, на то это и тесты - показательная вещь, что на это он способен.

По крайне мере, о не создаёт структуры по новой - перезагружая основную(Как это делает TValue)... В этом и заключается быстро действие.

Я к слову, даже строки сумел оптимизировать так, что бы они по новой не перезаписывались если она уже записана


Для каждого типа я создал функцию, которая делает что - то типа

Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
procedure TSPHPValue.SetValuePlus(Value: IntPtr); // int64, single ....
begin
  case _Type of
    SInt32: // Integer -2147483648..2147483647
      TInteger := TInteger + Value;
    SInt64: // Int64 0..2^64-1
      TInt64 := TInt64 + Value;
    SSingle: // Single 1.5e-45 .. 3.4e+38
      TSingle := TSingle + Value;
    SDouble: // Double 5.0e-324 .. 1.7e+308
      TDouble := TDouble + Value;
    SExtended: // Extended 3.4e-4932 .. 1.1e+4932 - 5.0e-324 .. 1.7e+308
      TExtended := TExtended + Value;
    SCurrency: // Currency -922337203685477.5808.. 922337203685477.5807
      TCurrency := TCurrency + Value;
    SPointer: // Pointer
      TPointer := Pointer(NativeInt(TPointer) + Value);
    SNULL:
      begin
        SetInteger(Value);
        SetValuePlus(IntPtr(Value));
      end;
  end;
end;



Как - то странно, но inc работает дольше. По этому использую стандартный PLUS хотя асм кодов больше становится в итоге.



А вот и строки
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
procedure TSPHPValue.StringSet(const Value: string);
begin
  if TBoxArray = nil then
  begin
    new(TBoxArray);
    SetLength(TBoxArray^, SizeOf(Value));
  end
  else if PUnicodeString(@TBoxArray^[0])^ = Value then
    Exit;

  if _Type <> SString then
    _Type := SString;

  CopyArray(@TBoxArray^[0], @Value, System.TypeInfo(string), 1);
end;

procedure TSPHPValue.StringAdd(const Value: string);
var
  S: PUnicodeString;
begin
  if _Type <> SString then
    _Type := SString;

  if TBoxArray = nil then
    StringSet('');

  S := PUnicodeString(@TBoxArray^[0]);
  S^ := S^ + Value;
end;

...
Рейтинг: 0 / 0
int64 и перечисление в структуре
    #39466657
SOFT FOR YOU
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Няшик,

Советую менять case на вызов функции из массива
Под x86 кейсы работают ещё более менее, если идут по порядку, а под x64 там бинарный поиск. Лишние команды, переходы
...
Рейтинг: 0 / 0
int64 и перечисление в структуре
    #39466678
Няшик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SOFT FOR YOUНяшик,

Советую менять case на вызов функции из массива
Под x86 кейсы работают ещё более менее, если идут по порядку, а под x64 там бинарный поиск. Лишние команды, переходы


А разве вызов функции не будет замедлять ? В принципе, вот такие результаты

3.185233 сек.
Код: pascal
1.
inc(t.TInt64, i);



А вот с case
3.519293 сек.
Код: pascal
1.
 t.SetValuePlus(i);



Разница вроде в 0.33406 незначительная из 1000000000 раз
...
Рейтинг: 0 / 0
int64 и перечисление в структуре
    #39466726
Няшик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SOFT FOR YOUНяшик,

Советую менять case на вызов функции из массива
Под x86 кейсы работают ещё более менее, если идут по порядку, а под x64 там бинарный поиск. Лишние команды, переходы

Даже придумать не могу, как передать в коллбэк свою же структуру.. И так не получиться

Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
procedure TSPHPValue.SetValuePlus(Value: Int64);

type
  tCall = procedure(Value: Int64);

  procedure SetSInt32(Value: Int64);
  begin
    TInteger := TInteger + Value;
  end;

  procedure SetSInt64(Value: Int64);
  begin
    TInt64 := TInt64 + Value;
  end;

  procedure SetSSingle(Value: Int64);
  begin
    TSingle := TSingle + Value;
  end;

  procedure SetSDouble(Value: Int64);
  begin
    TDouble := TDouble + Value;
  end;

  procedure SetSExtended(Value: Int64);
  begin
    TExtended := TExtended + Value;
  end;

  procedure SetSCurrency(Value: Int64);
  begin
    TCurrency := TCurrency + Value;
  end;

  procedure SetSPointer(Value: Int64);
  begin
    TPointer := Pointer(NativeInt(TPointer) + Value);
  end;

  procedure SetSNULL(Value: Int64);
  begin
    SetInt64(Value);
  end;

var
  TestSet: array [TEngineVarTypes] of tCall = (
    SetSInt32,
    SetSInt64,
    SetSSingle,
    SetSDouble,
    SetSExtended,
    SetSCurrency,
    SetSPointer,
    SetSNULL
  );

begin
  TestSet[_Type](Value);
end;

...
Рейтинг: 0 / 0
int64 и перечисление в структуре
    #39466730
Bred eFeM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
НяшикА как её для структуры получить?
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
var
 V: TSPHPValue;
 pV: ^TSPHPValue;
begin
 pV := @V;
 with pV^ do begin
   _Type := 1;
   TInt64 := 2;
   TPointer := nil;
 end;
end;

packed record

Unit1.pas.252: _Type := 1;
005DFD48 C60001           mov byte ptr [eax],$01   //+$00
Unit1.pas.253: TInt64 := 2;
005DFD4B C7400102000000   mov [eax+$01],$00000002
005DFD52 C7400500000000   mov [eax+$05],$00000000
Unit1.pas.254: TPointer := nil;
005DFD59 33D2             xor edx,edx
005DFD5B 895009           mov [eax+$09],edx

{packed} record

Unit1.pas.248: _Type := 1;
005D2CFD C60001           mov byte ptr [eax],$01   //+$00
Unit1.pas.249: TInt64 := 2;
005D2D00 C7400802000000   mov [eax+$08],$00000002
005D2D07 C7400C00000000   mov [eax+$0c],$00000000
Unit1.pas.250: TPointer := nil;
005D2D0E 33D2             xor edx,edx
005D2D10 895010           mov [eax+$10],edx



Иногда компилятор сам оптимизирует размещение записи в памяти, поэтому и получилось, что с packed что без @TSPHPValue.TInt64 кратное 4. А после изменения структуры оптимизатор уже не смог тебе помочь.




Слабо-нервным не смотреть ))
Няшик, держи немного изврата - тебе понравится:
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
type
TEngineVarTypes = (TInteger, TSingle, TDouble, TInt64, TPointer, TExtended);
TSPHPValue = record
 case &Type:TEngineVarTypes of
  TInteger: (Integer : IntPtr);    // IntPtr ??
  TSingle:  (Single  : Single);
  TDouble:  (Double  : Double);
  TInt64:   (Int64   : Int64);
  TPointer: (Pointer : Pointer);
  TExtended:(Extended: Extended);
 end;
var
 V: TSPHPValue;
 R: array [0..SizeOf(Extended)-1] of Byte;
 I: Integer  absolute R;
 F: Single   absolute R;
 D: Double   absolute R;
 L: Int64    absolute R;
 P: Pointer  absolute R;
 E: Extended absolute R;
begin
 with V do case &Type of
  TInteger: Integer := I;
  TSingle:  Single  := F;
  TDouble:  Double  := D;
  TInt64:   Int64   := L;
  TPointer: Pointer := P;
  TExtended:Extended:= E;
 end;
end;

...
Рейтинг: 0 / 0
int64 и перечисление в структуре
    #39466737
Няшик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Bred eFeMНяшикА как её для структуры получить?
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
var
 V: TSPHPValue;
 pV: ^TSPHPValue;
begin
 pV := @V;
 with pV^ do begin
   _Type := 1;
   TInt64 := 2;
   TPointer := nil;
 end;
end;

packed record

Unit1.pas.252: _Type := 1;
005DFD48 C60001           mov byte ptr [eax],$01   //+$00
Unit1.pas.253: TInt64 := 2;
005DFD4B C7400102000000   mov [eax+$01],$00000002
005DFD52 C7400500000000   mov [eax+$05],$00000000
Unit1.pas.254: TPointer := nil;
005DFD59 33D2             xor edx,edx
005DFD5B 895009           mov [eax+$09],edx

{packed} record

Unit1.pas.248: _Type := 1;
005D2CFD C60001           mov byte ptr [eax],$01   //+$00
Unit1.pas.249: TInt64 := 2;
005D2D00 C7400802000000   mov [eax+$08],$00000002
005D2D07 C7400C00000000   mov [eax+$0c],$00000000
Unit1.pas.250: TPointer := nil;
005D2D0E 33D2             xor edx,edx
005D2D10 895010           mov [eax+$10],edx



Иногда компилятор сам оптимизирует размещение записи в памяти, поэтому и получилось, что с packed что без @TSPHPValue.TInt64 кратное 4. А после изменения структуры оптимизатор уже не смог тебе помочь.




Слабо-нервным не смотреть ))
Няшик, держи немного изврата - тебе понравится:
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
type
TEngineVarTypes = (TInteger, TSingle, TDouble, TInt64, TPointer, TExtended);
TSPHPValue = record
 case &Type:TEngineVarTypes of
  TInteger: (Integer : IntPtr);    // IntPtr ??
  TSingle:  (Single  : Single);
  TDouble:  (Double  : Double);
  TInt64:   (Int64   : Int64);
  TPointer: (Pointer : Pointer);
  TExtended:(Extended: Extended);
 end;
var
 V: TSPHPValue;
 R: array [0..SizeOf(Extended)-1] of Byte;
 I: Integer  absolute R;
 F: Single   absolute R;
 D: Double   absolute R;
 L: Int64    absolute R;
 P: Pointer  absolute R;
 E: Extended absolute R;
begin
 with V do case &Type of
  TInteger: Integer := I;
  TSingle:  Single  := F;
  TDouble:  Double  := D;
  TInt64:   Int64   := L;
  TPointer: Pointer := P;
  TExtended:Extended:= E;
 end;
end;



Как - то пробовал работать с absolute , но получал дикие тормоза.. И вроде бы всё нормально было конечно...
...
Рейтинг: 0 / 0
int64 и перечисление в структуре
    #39466749
Няшик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Bred eFeM,

Всё же, не помогло. выдаёт 12.271936 сек.

Код: pascal
1.
2.
3.
4.
    for i := 0 to 1000000000 - 1 do
    begin
      inc(L, i);
    end;



Хоть убей =___=
...
Рейтинг: 0 / 0
int64 и перечисление в структуре
    #39466782
Няшик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я НАШЁЛ ПРОБЛЕМУ!!!!


Если в первом случае он генерирует это

Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
t:
0060C124 019BE4B5595B     add [ebx+$5b59b5e4],ebx
0060C12A F006             lock push es
0060C12C 0200             add al,[eax]
0060C12E 0000             add [eax],al
0060C130 0000             add [eax],al
0060C132 0000             add [eax],al
0060C134 0000             add [eax],al
0060C136 0000             add [eax],al



То во втором он генерирует не мысленное число add [eax],al

Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
121.
122.
123.
124.
125.
126.
127.
128.
129.
130.
131.
132.
133.
134.
135.
136.
137.
138.
139.
140.
141.
142.
143.
144.
145.
146.
147.
148.
149.
150.
151.
152.
153.
154.
155.
156.
157.
158.
159.
160.
161.
162.
163.
164.
165.
166.
167.
168.
169.
170.
171.
172.
173.
174.
175.
176.
177.
178.
179.
180.
181.
182.
183.
184.
185.
186.
187.
188.
189.
190.
191.
192.
193.
194.
195.
196.
197.
198.
199.
200.
201.
202.
203.
204.
205.
206.
207.
208.
209.
210.
211.
212.
213.
214.
215.
216.
217.
218.
219.
220.
221.
222.
223.
224.
225.
226.
227.
228.
229.
230.
231.
232.
233.
234.
235.
236.
237.
238.
239.
240.
241.
242.
243.
244.
245.
246.
247.
248.
249.
250.
251.
252.
253.
254.
255.
256.
257.
258.
259.
260.
261.
262.
263.
264.
265.
266.
267.
268.
269.
270.
271.
272.
273.
274.
275.
276.
277.
278.
279.
280.
281.
282.
283.
284.
285.
286.
287.
288.
289.
290.
291.
292.
293.
294.
295.
296.
297.
298.
299.
300.
301.
302.
303.
304.
305.
306.
307.
308.
309.
310.
311.
312.
313.
314.
315.
316.
317.
318.
319.
320.
321.
322.
323.
324.
325.
326.
327.
328.
329.
330.
331.
332.
333.
334.
335.
336.
337.
338.
339.
340.
341.
342.
343.
344.
345.
346.
347.
348.
349.
350.
351.
352.
353.
354.
355.
356.
357.
358.
359.
360.
361.
362.
363.
364.
365.
366.
367.
368.
369.
370.
371.
372.
373.
374.
375.
376.
377.
378.
379.
380.
381.
382.
383.
384.
385.
386.
387.
388.
389.
390.
391.
392.
393.
394.
395.
396.
397.
398.
399.
400.
401.
402.
403.
404.
405.
406.
407.
408.
409.
410.
411.
412.
413.
414.
415.
416.
417.
418.
419.
420.
421.
422.
423.
424.
425.
426.
427.
428.
429.
430.
431.
432.
433.
434.
435.
436.
437.
438.
439.
440.
441.
442.
443.
444.
445.
446.
447.
448.
449.
450.
451.
452.
453.
454.
455.
456.
457.
458.
459.
460.
461.
462.
463.
464.
465.
466.
467.
468.
469.
470.
471.
472.
473.
474.
475.
476.
477.
478.
479.
480.
481.
482.
483.
484.
485.
486.
487.
488.
489.
490.
491.
492.
493.
494.
495.
496.
497.
498.
499.
500.
501.
502.
503.
504.
505.
506.
507.
508.
509.
510.
511.
512.
513.
514.
515.
516.
517.
518.
519.
520.
521.
522.
523.
524.
525.
526.
527.
528.
529.
530.
531.
532.
533.
534.
535.
536.
537.
538.
539.
540.
541.
542.
543.
544.
545.
546.
547.
548.
549.
550.
551.
552.
553.
554.
555.
556.
557.
558.
559.
560.
561.
562.
563.
564.
565.
566.
567.
568.
569.
570.
571.
572.
573.
574.
575.
576.
577.
578.
579.
580.
581.
582.
583.
584.
585.
586.
587.
588.
589.
590.
591.
592.
593.
594.
595.
596.
597.
598.
599.
600.
601.
602.
603.
604.
605.
606.
607.
608.
609.
610.
611.
612.
613.
614.
615.
616.
617.
618.
619.
620.
621.
622.
623.
624.
625.
626.
627.
628.
629.
630.
631.
632.
633.
634.
635.
636.
637.
638.
639.
640.
641.
642.
643.
644.
645.
646.
647.
648.
649.
650.
651.
652.
653.
654.
655.
656.
657.
658.
659.
660.
661.
662.
663.
664.
665.
666.
667.
668.
669.
670.
671.
672.
673.
674.
675.
676.
677.
678.
679.
680.
681.
682.
683.
684.
685.
686.
687.
688.
689.
690.
691.
692.
693.
694.
695.
696.
697.
698.
699.
700.
701.
702.
703.
704.
705.
706.
707.
708.
709.
710.
711.
712.
713.
714.
715.
716.
717.
718.
719.
720.
721.
722.
723.
724.
725.
726.
727.
728.
729.
730.
731.
732.
733.
734.
735.
736.
737.
738.
739.
740.
741.
742.
743.
744.
745.
746.
747.
748.
749.
750.
751.
752.
753.
754.
755.
756.
757.
758.
759.
760.
761.
762.
763.
764.
765.
766.
767.
768.
769.
770.
771.
772.
773.
774.
775.
776.
777.
778.
779.
780.
781.
782.
783.
784.
785.
786.
787.
788.
789.
790.
791.
792.
793.
794.
795.
796.
797.
798.
799.
800.
801.
802.
803.
804.
805.
806.
807.
808.
809.
810.
811.
812.
813.
814.
815.
816.
817.
818.
819.
820.
821.
822.
823.
824.
825.
826.
827.
828.
829.
830.
831.
832.
833.
834.
835.
836.
837.
838.
839.
840.
841.
842.
843.
844.
845.
846.
847.
848.
849.
850.
851.
852.
853.
854.
855.
856.
857.
858.
859.
860.
861.
862.
863.
864.
865.
866.
867.
868.
869.
870.
871.
872.
873.
874.
875.
876.
877.
878.
879.
880.
881.
882.
883.
884.
885.
886.
887.
888.
889.
890.
891.
892.
893.
894.
895.
896.
897.
898.
899.
900.
901.
902.
903.
904.
905.
906.
907.
908.
909.
910.
911.
912.
913.
914.
915.
916.
917.
918.
919.
920.
921.
922.
923.
924.
925.
926.
927.
928.
929.
930.
931.
932.
933.
934.
935.
936.
937.
938.
939.
940.
941.
942.
943.
944.
945.
946.
947.
948.
949.
950.
951.
952.
953.
954.
955.
956.
957.
958.
959.
960.
961.
962.
963.
964.
965.
966.
967.
968.
969.
970.
971.
972.
973.
974.
975.
976.
977.
978.
979.
980.
981.
982.
983.
984.
985.
986.
987.
988.
989.
990.
991.
992.
993.
994.
995.
996.
997.
998.
999.
1000.
1001.
1002.
1003.
1004.
1005.
1006.
1007.
1008.
1009.
1010.
1011.
1012.
1013.
1014.
1015.
1016.
1017.
1018.
1019.
1020.
1021.
1022.
1023.
1024.
1025.
1026.
1027.
1028.
1029.
1030.
1031.
1032.
1033.
1034.
1035.
1036.
1037.
1038.
1039.
1040.
1041.
1042.
1043.
1044.
1045.
1046.
1047.
1048.
1049.
1050.
1051.
1052.
1053.
1054.
1055.
1056.
1057.
1058.
1059.
1060.
1061.
1062.
1063.
1064.
1065.
1066.
1067.
1068.
1069.
1070.
1071.
1072.
1073.
1074.
1075.
1076.
1077.
1078.
1079.
1080.
1081.
1082.
1083.
1084.
1085.
1086.
1087.
1088.
1089.
1090.
1091.
1092.
1093.
1094.
1095.
1096.
1097.
1098.
1099.
1100.
1101.
1102.
1103.
1104.
1105.
1106.
1107.
1108.
1109.
1110.
1111.
1112.
1113.
1114.
1115.
1116.
1117.
1118.
1119.
1120.
1121.
1122.
1123.
1124.
1125.
1126.
1127.
1128.
1129.
1130.
1131.
1132.
1133.
1134.
1135.
1136.
1137.
1138.
1139.
1140.
1141.
1142.
1143.
1144.
1145.
1146.
1147.
1148.
1149.
1150.
1151.
1152.
1153.
1154.
1155.
1156.
1157.
1158.
1159.
1160.
1161.
1162.
1163.
1164.
1165.
1166.
1167.
1168.
1169.
1170.
1171.
1172.
1173.
1174.
1175.
1176.
1177.
1178.
1179.
1180.
1181.
1182.
1183.
1184.
1185.
1186.
1187.
1188.
1189.
1190.
1191.
1192.
1193.
1194.
1195.
1196.
1197.
1198.
1199.
1200.
1201.
1202.
1203.
1204.
1205.
1206.
1207.
1208.
1209.
1210.
1211.
1212.
1213.
1214.
1215.
1216.
1217.
1218.
1219.
1220.
1221.
1222.
1223.
1224.
1225.
1226.
1227.
1228.
1229.
1230.
1231.
1232.
1233.
1234.
1235.
1236.
1237.
1238.
1239.
1240.
1241.
1242.
1243.
1244.
1245.
1246.
1247.
1248.
1249.
1250.
1251.
1252.
1253.
1254.
1255.
1256.
1257.
1258.
1259.
1260.
1261.
1262.
1263.
1264.
1265.
1266.
1267.
1268.
1269.
1270.
1271.
1272.
1273.
1274.
1275.
1276.
1277.
1278.
1279.
1280.
1281.
1282.
1283.
1284.
1285.
1286.
1287.
1288.
1289.
1290.
1291.
1292.
1293.
1294.
1295.
1296.
1297.
1298.
1299.
1300.
1301.
1302.
1303.
1304.
1305.
1306.
1307.
1308.
1309.
1310.
1311.
1312.
1313.
1314.
1315.
1316.
1317.
1318.
1319.
1320.
1321.
1322.
1323.
1324.
1325.
1326.
1327.
1328.
1329.
1330.
1331.
1332.
1333.
1334.
1335.
1336.
1337.
1338.
1339.
1340.
1341.
1342.
1343.
1344.
1345.
1346.
1347.
1348.
1349.
1350.
1351.
1352.
1353.
1354.
1355.
1356.
1357.
1358.
1359.
1360.
1361.
1362.
1363.
1364.
1365.
1366.
1367.
1368.
1369.
1370.
1371.
1372.
1373.
1374.
1375.
1376.
1377.
1378.
1379.
1380.
1381.
1382.
1383.
1384.
1385.
1386.
1387.
1388.
1389.
1390.
1391.
1392.
1393.
1394.
1395.
1396.
1397.
1398.
1399.
1400.
1401.
1402.
1403.
1404.
1405.
1406.
1407.
1408.
1409.
1410.
1411.
1412.
1413.
1414.
1415.
1416.
1417.
1418.
1419.
1420.
1421.
1422.
1423.
1424.
1425.
1426.
1427.
1428.
1429.
1430.
1431.
1432.
1433.
1434.
1435.
1436.
1437.
1438.
1439.
1440.
1441.
1442.
1443.
1444.
1445.
1446.
1447.
1448.
1449.
1450.
1451.
1452.
1453.
1454.
1455.
1456.
1457.
1458.
1459.
1460.
1461.
1462.
1463.
1464.
1465.
1466.
1467.
1468.
1469.
1470.
1471.
1472.
1473.
1474.
1475.
1476.
1477.
1478.
1479.
1480.
1481.
1482.
1483.
1484.
1485.
1486.
1487.
1488.
1489.
1490.
1491.
1492.
1493.
1494.
1495.
1496.
1497.
1498.
1499.
1500.
1501.
1502.
1503.
1504.
1505.
1506.
1507.
1508.
1509.
1510.
1511.
1512.
1513.
1514.
1515.
1516.
1517.
1518.
1519.
1520.
1521.
1522.
1523.
1524.
1525.
1526.
1527.
1528.
1529.
1530.
1531.
1532.
1533.
1534.
1535.
1536.
1537.
1538.
1539.
1540.
1541.
1542.
1543.
1544.
1545.
1546.
1547.
1548.
1549.
1550.
1551.
1552.
1553.
1554.
1555.
1556.
1557.
1558.
1559.
1560.
1561.
1562.
1563.
1564.
1565.
1566.
1567.
1568.
1569.
1570.
1571.
1572.
1573.
1574.
1575.
1576.
1577.
1578.
1579.
1580.
1581.
1582.
1583.
1584.
1585.
1586.
1587.
1588.
1589.
1590.
1591.
1592.
1593.
1594.
1595.
1596.
1597.
1598.
1599.
1600.
1601.
1602.
1603.
1604.
1605.
1606.
1607.
1608.
1609.
1610.
1611.
1612.
1613.
1614.
1615.
1616.
1617.
1618.
1619.
1620.
1621.
1622.
1623.
1624.
1625.
1626.
1627.
1628.
1629.
1630.
1631.
1632.
1633.
1634.
1635.
1636.
1637.
1638.
1639.
1640.
1641.
1642.
1643.
1644.
1645.
1646.
1647.
1648.
1649.
1650.
1651.
1652.
1653.
1654.
1655.
1656.
1657.
1658.
1659.
1660.
1661.
1662.
1663.
1664.
1665.
1666.
1667.
1668.
1669.
1670.
1671.
1672.
1673.
1674.
1675.
1676.
1677.
1678.
1679.
1680.
1681.
1682.
1683.
1684.
1685.
1686.
1687.
1688.
1689.
1690.
1691.
1692.
1693.
1694.
1695.
1696.
1697.
1698.
1699.
1700.
1701.
1702.
1703.
1704.
1705.
1706.
1707.
1708.
1709.
1710.
1711.
1712.
1713.
1714.
1715.
1716.
1717.
1718.
1719.
1720.
1721.
1722.
1723.
1724.
1725.
1726.
1727.
1728.
1729.
1730.
1731.
1732.
1733.
1734.
1735.
1736.
1737.
1738.
1739.
1740.
1741.
1742.
1743.
1744.
1745.
1746.
1747.
1748.
1749.
1750.
1751.
1752.
1753.
1754.
1755.
1756.
1757.
1758.
1759.
1760.
1761.
1762.
1763.
1764.
1765.
1766.
1767.
1768.
1769.
1770.
1771.
1772.
1773.
1774.
1775.
1776.
1777.
1778.
1779.
1780.
1781.
1782.
1783.
1784.
1785.
1786.
1787.
1788.
1789.
1790.
1791.
1792.
1793.
1794.
1795.
1796.
1797.
1798.
1799.
1800.
1801.
1802.
1803.
1804.
1805.
1806.
1807.
1808.
1809.
1810.
1811.
1812.
1813.
1814.
1815.
1816.
1817.
1818.
1819.
1820.
1821.
1822.
1823.
1824.
1825.
1826.
1827.
1828.
1829.
1830.
1831.
1832.
1833.
1834.
1835.
1836.
1837.
t:
0060C124 0201             add al,[ecx]
0060C126 9B               wait 
0060C127 E4B5             in al,$b5
0060C129 59               pop ecx
0060C12A 5B               pop ebx
0060C12B F006             lock push es
0060C12D 0000             add [eax],al
0060C12F 0000             add [eax],al
0060C131 0000             add [eax],al
0060C133 0000             add [eax],al
0060C135 0000             add [eax],al
0060C137 0000             add [eax],al
0060C139 0000             add [eax],al
0060C13B 0000             add [eax],al
0060C13D 0000             add [eax],al
0060C13F 0000             add [eax],al
0060C141 0000             add [eax],al
0060C143 0000             add [eax],al
0060C145 0000             add [eax],al
0060C147 0000             add [eax],al
0060C149 0000             add [eax],al
0060C14B 0000             add [eax],al
0060C14D 0000             add [eax],al
0060C14F 0000             add [eax],al
0060C151 0000             add [eax],al
0060C153 0000             add [eax],al
0060C155 0000             add [eax],al
0060C157 0000             add [eax],al
0060C159 0000             add [eax],al
0060C15B 0000             add [eax],al
0060C15D 0000             add [eax],al
0060C15F 0000             add [eax],al
0060C161 0000             add [eax],al
0060C163 0000             add [eax],al
0060C165 0000             add [eax],al
0060C167 0000             add [eax],al
0060C169 0000             add [eax],al
0060C16B 0000             add [eax],al
0060C16D 0000             add [eax],al
0060C16F 0000             add [eax],al
0060C171 0000             add [eax],al
0060C173 0000             add [eax],al
0060C175 0000             add [eax],al
0060C177 0000             add [eax],al
0060C179 0000             add [eax],al
0060C17B 0000             add [eax],al
0060C17D 0000             add [eax],al
0060C17F 0000             add [eax],al
0060C181 0000             add [eax],al
0060C183 0000             add [eax],al
0060C185 0000             add [eax],al
0060C187 0000             add [eax],al
0060C189 0000             add [eax],al
0060C18B 0000             add [eax],al
0060C18D 0000             add [eax],al
0060C18F 0000             add [eax],al
0060C191 0000             add [eax],al
0060C193 0000             add [eax],al
0060C195 0000             add [eax],al
0060C197 0000             add [eax],al
0060C199 0000             add [eax],al
0060C19B 0000             add [eax],al
0060C19D 0000             add [eax],al
0060C19F 0000             add [eax],al
0060C1A1 0000             add [eax],al
0060C1A3 0000             add [eax],al
0060C1A5 0000             add [eax],al
0060C1A7 0000             add [eax],al
0060C1A9 0000             add [eax],al
0060C1AB 0000             add [eax],al
0060C1AD 0000             add [eax],al
0060C1AF 0000             add [eax],al
0060C1B1 0000             add [eax],al
0060C1B3 0000             add [eax],al
0060C1B5 0000             add [eax],al
0060C1B7 0000             add [eax],al
0060C1B9 0000             add [eax],al
0060C1BB 0000             add [eax],al
0060C1BD 0000             add [eax],al
0060C1BF 0000             add [eax],al
0060C1C1 0000             add [eax],al
0060C1C3 0000             add [eax],al
0060C1C5 0000             add [eax],al
0060C1C7 0000             add [eax],al
0060C1C9 0000             add [eax],al
0060C1CB 0000             add [eax],al
0060C1CD 0000             add [eax],al
0060C1CF 0000             add [eax],al
0060C1D1 0000             add [eax],al
0060C1D3 0000             add [eax],al
0060C1D5 0000             add [eax],al
0060C1D7 0000             add [eax],al
0060C1D9 0000             add [eax],al
0060C1DB 0000             add [eax],al
0060C1DD 0000             add [eax],al
0060C1DF 0000             add [eax],al
0060C1E1 0000             add [eax],al
0060C1E3 0000             add [eax],al
0060C1E5 0000             add [eax],al
0060C1E7 0000             add [eax],al
0060C1E9 0000             add [eax],al
0060C1EB 0000             add [eax],al
0060C1ED 0000             add [eax],al
0060C1EF 0000             add [eax],al
0060C1F1 0000             add [eax],al
0060C1F3 0000             add [eax],al
0060C1F5 0000             add [eax],al
0060C1F7 0000             add [eax],al
0060C1F9 0000             add [eax],al
0060C1FB 0000             add [eax],al
0060C1FD 0000             add [eax],al
0060C1FF 0000             add [eax],al
0060C201 0000             add [eax],al
0060C203 0000             add [eax],al
0060C205 0000             add [eax],al
0060C207 0000             add [eax],al
0060C209 0000             add [eax],al
0060C20B 0000             add [eax],al
0060C20D 0000             add [eax],al
0060C20F 0000             add [eax],al
0060C211 0000             add [eax],al
0060C213 0000             add [eax],al
0060C215 0000             add [eax],al
0060C217 0000             add [eax],al
0060C219 0000             add [eax],al
0060C21B 0000             add [eax],al
0060C21D 0000             add [eax],al
0060C21F 0000             add [eax],al
0060C221 0000             add [eax],al
0060C223 0000             add [eax],al
0060C225 0000             add [eax],al
0060C227 0000             add [eax],al
0060C229 0000             add [eax],al
0060C22B 0000             add [eax],al
0060C22D 0000             add [eax],al
0060C22F 0000             add [eax],al
0060C231 0000             add [eax],al
0060C233 0000             add [eax],al
0060C235 0000             add [eax],al
0060C237 0000             add [eax],al
0060C239 0000             add [eax],al
0060C23B 0000             add [eax],al
0060C23D 0000             add [eax],al
0060C23F 0000             add [eax],al
0060C241 0000             add [eax],al
0060C243 0000             add [eax],al
0060C245 0000             add [eax],al
0060C247 0000             add [eax],al
0060C249 0000             add [eax],al
0060C24B 0000             add [eax],al
0060C24D 0000             add [eax],al
0060C24F 0000             add [eax],al
0060C251 0000             add [eax],al
0060C253 0000             add [eax],al
0060C255 0000             add [eax],al
0060C257 0000             add [eax],al
0060C259 0000             add [eax],al
0060C25B 0000             add [eax],al
0060C25D 0000             add [eax],al
0060C25F 0000             add [eax],al
0060C261 0000             add [eax],al
0060C263 0000             add [eax],al
0060C265 0000             add [eax],al
0060C267 0000             add [eax],al
0060C269 0000             add [eax],al
0060C26B 0000             add [eax],al
0060C26D 0000             add [eax],al
0060C26F 0000             add [eax],al
0060C271 0000             add [eax],al
0060C273 0000             add [eax],al
0060C275 0000             add [eax],al
0060C277 0000             add [eax],al
0060C279 0000             add [eax],al
0060C27B 0000             add [eax],al
0060C27D 0000             add [eax],al
0060C27F 0000             add [eax],al
0060C281 0000             add [eax],al
0060C283 0000             add [eax],al
0060C285 0000             add [eax],al
0060C287 0000             add [eax],al
0060C289 0000             add [eax],al
0060C28B 0000             add [eax],al
0060C28D 0000             add [eax],al
0060C28F 0000             add [eax],al
0060C291 0000             add [eax],al
0060C293 0000             add [eax],al
0060C295 0000             add [eax],al
0060C297 0000             add [eax],al
0060C299 0000             add [eax],al
0060C29B 0000             add [eax],al
0060C29D 0000             add [eax],al
0060C29F 0000             add [eax],al
0060C2A1 0000             add [eax],al
0060C2A3 0000             add [eax],al
0060C2A5 0000             add [eax],al
0060C2A7 0000             add [eax],al
0060C2A9 0000             add [eax],al
0060C2AB 0000             add [eax],al
0060C2AD 0000             add [eax],al
0060C2AF 0000             add [eax],al
0060C2B1 0000             add [eax],al
0060C2B3 0000             add [eax],al
0060C2B5 0000             add [eax],al
0060C2B7 0000             add [eax],al
0060C2B9 0000             add [eax],al
0060C2BB 0000             add [eax],al
0060C2BD 0000             add [eax],al
0060C2BF 0000             add [eax],al
0060C2C1 0000             add [eax],al
0060C2C3 0000             add [eax],al
0060C2C5 0000             add [eax],al
0060C2C7 0000             add [eax],al
0060C2C9 0000             add [eax],al
0060C2CB 0000             add [eax],al
0060C2CD 0000             add [eax],al
0060C2CF 0000             add [eax],al
0060C2D1 0000             add [eax],al
0060C2D3 0000             add [eax],al
0060C2D5 0000             add [eax],al
0060C2D7 0000             add [eax],al
0060C2D9 0000             add [eax],al
0060C2DB 0000             add [eax],al
0060C2DD 0000             add [eax],al
0060C2DF 0000             add [eax],al
0060C2E1 0000             add [eax],al
0060C2E3 0000             add [eax],al
0060C2E5 0000             add [eax],al
0060C2E7 0000             add [eax],al
0060C2E9 0000             add [eax],al
0060C2EB 0000             add [eax],al
0060C2ED 0000             add [eax],al
0060C2EF 0000             add [eax],al
0060C2F1 0000             add [eax],al
0060C2F3 0000             add [eax],al
0060C2F5 0000             add [eax],al
0060C2F7 0000             add [eax],al
0060C2F9 0000             add [eax],al
0060C2FB 0000             add [eax],al
0060C2FD 0000             add [eax],al
0060C2FF 0000             add [eax],al
0060C301 0000             add [eax],al
0060C303 0000             add [eax],al
0060C305 0000             add [eax],al
0060C307 0000             add [eax],al
0060C309 0000             add [eax],al
0060C30B 0000             add [eax],al
0060C30D 0000             add [eax],al
0060C30F 0000             add [eax],al
0060C311 0000             add [eax],al
0060C313 0000             add [eax],al
0060C315 0000             add [eax],al
0060C317 0000             add [eax],al
0060C319 0000             add [eax],al
0060C31B 0000             add [eax],al
0060C31D 0000             add [eax],al
0060C31F 0000             add [eax],al
0060C321 0000             add [eax],al
0060C323 0000             add [eax],al
0060C325 0000             add [eax],al
0060C327 0000             add [eax],al
0060C329 0000             add [eax],al
0060C32B 0000             add [eax],al
0060C32D 0000             add [eax],al
0060C32F 0000             add [eax],al
0060C331 0000             add [eax],al
0060C333 0000             add [eax],al
0060C335 0000             add [eax],al
0060C337 0000             add [eax],al
0060C339 0000             add [eax],al
0060C33B 0000             add [eax],al
0060C33D 0000             add [eax],al
0060C33F 0000             add [eax],al
0060C341 0000             add [eax],al
0060C343 0000             add [eax],al
0060C345 0000             add [eax],al
0060C347 0000             add [eax],al
0060C349 0000             add [eax],al
0060C34B 0000             add [eax],al
0060C34D 0000             add [eax],al
0060C34F 0000             add [eax],al
0060C351 0000             add [eax],al
0060C353 0000             add [eax],al
0060C355 0000             add [eax],al
0060C357 0000             add [eax],al
0060C359 0000             add [eax],al
0060C35B 0000             add [eax],al
0060C35D 0000             add [eax],al
0060C35F 0000             add [eax],al
0060C361 0000             add [eax],al
0060C363 0000             add [eax],al
0060C365 0000             add [eax],al
0060C367 0000             add [eax],al
0060C369 0000             add [eax],al
0060C36B 0000             add [eax],al
0060C36D 0000             add [eax],al
0060C36F 0000             add [eax],al
0060C371 0000             add [eax],al
0060C373 0000             add [eax],al
0060C375 0000             add [eax],al
0060C377 0000             add [eax],al
0060C379 0000             add [eax],al
0060C37B 0000             add [eax],al
0060C37D 0000             add [eax],al
0060C37F 0000             add [eax],al
0060C381 0000             add [eax],al
0060C383 0000             add [eax],al
0060C385 0000             add [eax],al
0060C387 0000             add [eax],al
0060C389 0000             add [eax],al
0060C38B 0000             add [eax],al
0060C38D 0000             add [eax],al
0060C38F 0000             add [eax],al
0060C391 0000             add [eax],al
0060C393 0000             add [eax],al
0060C395 0000             add [eax],al
0060C397 0000             add [eax],al
0060C399 0000             add [eax],al
0060C39B 0000             add [eax],al
0060C39D 0000             add [eax],al
0060C39F 0000             add [eax],al
0060C3A1 0000             add [eax],al
0060C3A3 0000             add [eax],al
0060C3A5 0000             add [eax],al
0060C3A7 0000             add [eax],al
0060C3A9 0000             add [eax],al
0060C3AB 0000             add [eax],al
0060C3AD 0000             add [eax],al
0060C3AF 0000             add [eax],al
0060C3B1 0000             add [eax],al
0060C3B3 0000             add [eax],al
0060C3B5 0000             add [eax],al
0060C3B7 0000             add [eax],al
0060C3B9 0000             add [eax],al
0060C3BB 0000             add [eax],al
0060C3BD 0000             add [eax],al
0060C3BF 0000             add [eax],al
0060C3C1 0000             add [eax],al
0060C3C3 0000             add [eax],al
0060C3C5 0000             add [eax],al
0060C3C7 0000             add [eax],al
0060C3C9 0000             add [eax],al
0060C3CB 0000             add [eax],al
0060C3CD 0000             add [eax],al
0060C3CF 0000             add [eax],al
0060C3D1 0000             add [eax],al
0060C3D3 0000             add [eax],al
0060C3D5 0000             add [eax],al
0060C3D7 0000             add [eax],al
0060C3D9 0000             add [eax],al
0060C3DB 0000             add [eax],al
0060C3DD 0000             add [eax],al
0060C3DF 0000             add [eax],al
0060C3E1 0000             add [eax],al
0060C3E3 0000             add [eax],al
0060C3E5 0000             add [eax],al
0060C3E7 0000             add [eax],al
0060C3E9 0000             add [eax],al
0060C3EB 0000             add [eax],al
0060C3ED 0000             add [eax],al
0060C3EF 0000             add [eax],al
0060C3F1 0000             add [eax],al
0060C3F3 0000             add [eax],al
0060C3F5 0000             add [eax],al
0060C3F7 0000             add [eax],al
0060C3F9 0000             add [eax],al
0060C3FB 0000             add [eax],al
0060C3FD 0000             add [eax],al
0060C3FF 0000             add [eax],al
0060C401 0000             add [eax],al
0060C403 0000             add [eax],al
0060C405 0000             add [eax],al
0060C407 0000             add [eax],al
0060C409 0000             add [eax],al
0060C40B 0000             add [eax],al
0060C40D 0000             add [eax],al
0060C40F 0000             add [eax],al
0060C411 0000             add [eax],al
0060C413 0000             add [eax],al
0060C415 0000             add [eax],al
0060C417 0000             add [eax],al
0060C419 0000             add [eax],al
0060C41B 0000             add [eax],al
0060C41D 0000             add [eax],al
0060C41F 0000             add [eax],al
0060C421 0000             add [eax],al
0060C423 0000             add [eax],al
0060C425 0000             add [eax],al
0060C427 0000             add [eax],al
0060C429 0000             add [eax],al
0060C42B 0000             add [eax],al
0060C42D 0000             add [eax],al
0060C42F 0000             add [eax],al
0060C431 0000             add [eax],al
0060C433 0000             add [eax],al
0060C435 0000             add [eax],al
0060C437 0000             add [eax],al
0060C439 0000             add [eax],al
0060C43B 0000             add [eax],al
0060C43D 0000             add [eax],al
0060C43F 0000             add [eax],al
0060C441 0000             add [eax],al
0060C443 0000             add [eax],al
0060C445 0000             add [eax],al
0060C447 0000             add [eax],al
0060C449 0000             add [eax],al
0060C44B 0000             add [eax],al
0060C44D 0000             add [eax],al
0060C44F 0000             add [eax],al
0060C451 0000             add [eax],al
0060C453 0000             add [eax],al
0060C455 0000             add [eax],al
0060C457 0000             add [eax],al
0060C459 0000             add [eax],al
0060C45B 0000             add [eax],al
0060C45D 0000             add [eax],al
0060C45F 0000             add [eax],al
0060C461 0000             add [eax],al
0060C463 0000             add [eax],al
0060C465 0000             add [eax],al
0060C467 0000             add [eax],al
0060C469 0000             add [eax],al
0060C46B 0000             add [eax],al
0060C46D 0000             add [eax],al
0060C46F 0000             add [eax],al
0060C471 0000             add [eax],al
0060C473 0000             add [eax],al
0060C475 0000             add [eax],al
0060C477 0000             add [eax],al
0060C479 0000             add [eax],al
0060C47B 0000             add [eax],al
0060C47D 0000             add [eax],al
0060C47F 0000             add [eax],al
0060C481 0000             add [eax],al
0060C483 0000             add [eax],al
0060C485 0000             add [eax],al
0060C487 0000             add [eax],al
0060C489 0000             add [eax],al
0060C48B 0000             add [eax],al
0060C48D 0000             add [eax],al
0060C48F 0000             add [eax],al
0060C491 0000             add [eax],al
0060C493 0000             add [eax],al
0060C495 0000             add [eax],al
0060C497 0000             add [eax],al
0060C499 0000             add [eax],al
0060C49B 0000             add [eax],al
0060C49D 0000             add [eax],al
0060C49F 0000             add [eax],al
0060C4A1 0000             add [eax],al
0060C4A3 0000             add [eax],al
0060C4A5 0000             add [eax],al
0060C4A7 0000             add [eax],al
0060C4A9 0000             add [eax],al
0060C4AB 0000             add [eax],al
0060C4AD 0000             add [eax],al
0060C4AF 0000             add [eax],al
0060C4B1 0000             add [eax],al
0060C4B3 0000             add [eax],al
0060C4B5 0000             add [eax],al
0060C4B7 0000             add [eax],al
0060C4B9 0000             add [eax],al
0060C4BB 0000             add [eax],al
0060C4BD 0000             add [eax],al
0060C4BF 0000             add [eax],al
0060C4C1 0000             add [eax],al
0060C4C3 0000             add [eax],al
0060C4C5 0000             add [eax],al
0060C4C7 0000             add [eax],al
0060C4C9 0000             add [eax],al
0060C4CB 0000             add [eax],al
0060C4CD 0000             add [eax],al
0060C4CF 0000             add [eax],al
0060C4D1 0000             add [eax],al
0060C4D3 0000             add [eax],al
0060C4D5 0000             add [eax],al
0060C4D7 0000             add [eax],al
0060C4D9 0000             add [eax],al
0060C4DB 0000             add [eax],al
0060C4DD 0000             add [eax],al
0060C4DF 0000             add [eax],al
0060C4E1 0000             add [eax],al
0060C4E3 0000             add [eax],al
0060C4E5 0000             add [eax],al
0060C4E7 0000             add [eax],al
0060C4E9 0000             add [eax],al
0060C4EB 0000             add [eax],al
0060C4ED 0000             add [eax],al
0060C4EF 0000             add [eax],al
0060C4F1 0000             add [eax],al
0060C4F3 0000             add [eax],al
0060C4F5 0000             add [eax],al
0060C4F7 0000             add [eax],al
0060C4F9 0000             add [eax],al
0060C4FB 0000             add [eax],al
0060C4FD 0000             add [eax],al
0060C4FF 0000             add [eax],al
0060C501 0000             add [eax],al
0060C503 0000             add [eax],al
0060C505 0000             add [eax],al
0060C507 0000             add [eax],al
0060C509 0000             add [eax],al
0060C50B 0000             add [eax],al
0060C50D 0000             add [eax],al
0060C50F 0000             add [eax],al
0060C511 0000             add [eax],al
0060C513 0000             add [eax],al
0060C515 0000             add [eax],al
0060C517 0000             add [eax],al
0060C519 0000             add [eax],al
0060C51B 0000             add [eax],al
0060C51D 0000             add [eax],al
0060C51F 0000             add [eax],al
0060C521 0000             add [eax],al
0060C523 0000             add [eax],al
0060C525 0000             add [eax],al
0060C527 0000             add [eax],al
0060C529 0000             add [eax],al
0060C52B 0000             add [eax],al
0060C52D 0000             add [eax],al
0060C52F 0000             add [eax],al
0060C531 0000             add [eax],al
0060C533 0000             add [eax],al
0060C535 0000             add [eax],al
0060C537 0000             add [eax],al
0060C539 0000             add [eax],al
0060C53B 0000             add [eax],al
0060C53D 0000             add [eax],al
0060C53F 0000             add [eax],al
0060C541 0000             add [eax],al
0060C543 0000             add [eax],al
0060C545 0000             add [eax],al
0060C547 0000             add [eax],al
0060C549 0000             add [eax],al
0060C54B 0000             add [eax],al
0060C54D 0000             add [eax],al
0060C54F 0000             add [eax],al
0060C551 0000             add [eax],al
0060C553 0000             add [eax],al
0060C555 0000             add [eax],al
0060C557 0000             add [eax],al
0060C559 0000             add [eax],al
0060C55B 0000             add [eax],al
0060C55D 0000             add [eax],al
0060C55F 0000             add [eax],al
0060C561 0000             add [eax],al
0060C563 0000             add [eax],al
0060C565 0000             add [eax],al
0060C567 0000             add [eax],al
0060C569 0000             add [eax],al
0060C56B 0000             add [eax],al
0060C56D 0000             add [eax],al
0060C56F 0000             add [eax],al
0060C571 0000             add [eax],al
0060C573 0000             add [eax],al
0060C575 0000             add [eax],al
0060C577 0000             add [eax],al
0060C579 0000             add [eax],al
0060C57B 0000             add [eax],al
0060C57D 0000             add [eax],al
0060C57F 0000             add [eax],al
0060C581 0000             add [eax],al
0060C583 0000             add [eax],al
0060C585 0000             add [eax],al
0060C587 0000             add [eax],al
0060C589 0000             add [eax],al
0060C58B 0000             add [eax],al
0060C58D 0000             add [eax],al
0060C58F 0000             add [eax],al
0060C591 0000             add [eax],al
0060C593 0000             add [eax],al
0060C595 0000             add [eax],al
0060C597 0000             add [eax],al
0060C599 0000             add [eax],al
0060C59B 0000             add [eax],al
0060C59D 0000             add [eax],al
0060C59F 0000             add [eax],al
0060C5A1 0000             add [eax],al
0060C5A3 0000             add [eax],al
0060C5A5 0000             add [eax],al
0060C5A7 0000             add [eax],al
0060C5A9 0000             add [eax],al
0060C5AB 0000             add [eax],al
0060C5AD 0000             add [eax],al
0060C5AF 0000             add [eax],al
0060C5B1 0000             add [eax],al
0060C5B3 0000             add [eax],al
0060C5B5 0000             add [eax],al
0060C5B7 0000             add [eax],al
0060C5B9 0000             add [eax],al
0060C5BB 0000             add [eax],al
0060C5BD 0000             add [eax],al
0060C5BF 0000             add [eax],al
0060C5C1 0000             add [eax],al
0060C5C3 0000             add [eax],al
0060C5C5 0000             add [eax],al
0060C5C7 0000             add [eax],al
0060C5C9 0000             add [eax],al
0060C5CB 0000             add [eax],al
0060C5CD 0000             add [eax],al
0060C5CF 0000             add [eax],al
0060C5D1 0000             add [eax],al
0060C5D3 0000             add [eax],al
0060C5D5 0000             add [eax],al
0060C5D7 0000             add [eax],al
0060C5D9 0000             add [eax],al
0060C5DB 0000             add [eax],al
0060C5DD 0000             add [eax],al
0060C5DF 0000             add [eax],al
0060C5E1 0000             add [eax],al
0060C5E3 0000             add [eax],al
0060C5E5 0000             add [eax],al
0060C5E7 0000             add [eax],al
0060C5E9 0000             add [eax],al
0060C5EB 0000             add [eax],al
0060C5ED 0000             add [eax],al
0060C5EF 0000             add [eax],al
0060C5F1 0000             add [eax],al
0060C5F3 0000             add [eax],al
0060C5F5 0000             add [eax],al
0060C5F7 0000             add [eax],al
0060C5F9 0000             add [eax],al
0060C5FB 0000             add [eax],al
0060C5FD 0000             add [eax],al
0060C5FF 0000             add [eax],al
0060C601 0000             add [eax],al
0060C603 0000             add [eax],al
0060C605 0000             add [eax],al
0060C607 0000             add [eax],al
0060C609 0000             add [eax],al
0060C60B 0000             add [eax],al
0060C60D 0000             add [eax],al
0060C60F 0000             add [eax],al
0060C611 0000             add [eax],al
0060C613 0000             add [eax],al
0060C615 0000             add [eax],al
0060C617 0000             add [eax],al
0060C619 0000             add [eax],al
0060C61B 0000             add [eax],al
0060C61D 0000             add [eax],al
0060C61F 0000             add [eax],al
0060C621 0000             add [eax],al
0060C623 0000             add [eax],al
0060C625 0000             add [eax],al
0060C627 0000             add [eax],al
0060C629 0000             add [eax],al
0060C62B 0000             add [eax],al
0060C62D 0000             add [eax],al
0060C62F 0000             add [eax],al
0060C631 0000             add [eax],al
0060C633 0000             add [eax],al
0060C635 0000             add [eax],al
0060C637 0000             add [eax],al
0060C639 0000             add [eax],al
0060C63B 0000             add [eax],al
0060C63D 0000             add [eax],al
0060C63F 0000             add [eax],al
0060C641 0000             add [eax],al
0060C643 0000             add [eax],al
0060C645 0000             add [eax],al
0060C647 0000             add [eax],al
0060C649 0000             add [eax],al
0060C64B 0000             add [eax],al
0060C64D 0000             add [eax],al
0060C64F 0000             add [eax],al
0060C651 0000             add [eax],al
0060C653 0000             add [eax],al
0060C655 0000             add [eax],al
0060C657 0000             add [eax],al
0060C659 0000             add [eax],al
0060C65B 0000             add [eax],al
0060C65D 0000             add [eax],al
0060C65F 0000             add [eax],al
0060C661 0000             add [eax],al
0060C663 0000             add [eax],al
0060C665 0000             add [eax],al
0060C667 0000             add [eax],al
0060C669 0000             add [eax],al
0060C66B 0000             add [eax],al
0060C66D 0000             add [eax],al
0060C66F 0000             add [eax],al
0060C671 0000             add [eax],al
0060C673 0000             add [eax],al
0060C675 0000             add [eax],al
0060C677 0000             add [eax],al
0060C679 0000             add [eax],al
0060C67B 0000             add [eax],al
0060C67D 0000             add [eax],al
0060C67F 0000             add [eax],al
0060C681 0000             add [eax],al
0060C683 0000             add [eax],al
0060C685 0000             add [eax],al
0060C687 0000             add [eax],al
0060C689 0000             add [eax],al
0060C68B 0000             add [eax],al
0060C68D 0000             add [eax],al
0060C68F 0000             add [eax],al
0060C691 0000             add [eax],al
0060C693 0000             add [eax],al
0060C695 0000             add [eax],al
0060C697 0000             add [eax],al
0060C699 0000             add [eax],al
0060C69B 0000             add [eax],al
0060C69D 0000             add [eax],al
0060C69F 0000             add [eax],al
0060C6A1 0000             add [eax],al
0060C6A3 0000             add [eax],al
0060C6A5 0000             add [eax],al
0060C6A7 0000             add [eax],al
0060C6A9 0000             add [eax],al
0060C6AB 0000             add [eax],al
0060C6AD 0000             add [eax],al
0060C6AF 0000             add [eax],al
0060C6B1 0000             add [eax],al
0060C6B3 0000             add [eax],al
0060C6B5 0000             add [eax],al
0060C6B7 0000             add [eax],al
0060C6B9 0000             add [eax],al
0060C6BB 0000             add [eax],al
0060C6BD 0000             add [eax],al
0060C6BF 0000             add [eax],al
0060C6C1 0000             add [eax],al
0060C6C3 0000             add [eax],al
0060C6C5 0000             add [eax],al
0060C6C7 0000             add [eax],al
0060C6C9 0000             add [eax],al
0060C6CB 0000             add [eax],al
0060C6CD 0000             add [eax],al
0060C6CF 0000             add [eax],al
0060C6D1 0000             add [eax],al
0060C6D3 0000             add [eax],al
0060C6D5 0000             add [eax],al
0060C6D7 0000             add [eax],al
0060C6D9 0000             add [eax],al
0060C6DB 0000             add [eax],al
0060C6DD 0000             add [eax],al
0060C6DF 0000             add [eax],al
0060C6E1 0000             add [eax],al
0060C6E3 0000             add [eax],al
0060C6E5 0000             add [eax],al
0060C6E7 0000             add [eax],al
0060C6E9 0000             add [eax],al
0060C6EB 0000             add [eax],al
0060C6ED 0000             add [eax],al
0060C6EF 0000             add [eax],al
0060C6F1 0000             add [eax],al
0060C6F3 0000             add [eax],al
0060C6F5 0000             add [eax],al
0060C6F7 0000             add [eax],al
0060C6F9 0000             add [eax],al
0060C6FB 0000             add [eax],al
0060C6FD 0000             add [eax],al
0060C6FF 0000             add [eax],al
0060C701 0000             add [eax],al
0060C703 0000             add [eax],al
0060C705 0000             add [eax],al
0060C707 0000             add [eax],al
0060C709 0000             add [eax],al
0060C70B 0000             add [eax],al
0060C70D 0000             add [eax],al
0060C70F 0000             add [eax],al
0060C711 0000             add [eax],al
0060C713 0000             add [eax],al
0060C715 0000             add [eax],al
0060C717 0000             add [eax],al
0060C719 0000             add [eax],al
0060C71B 0000             add [eax],al
0060C71D 0000             add [eax],al
0060C71F 0000             add [eax],al
0060C721 0000             add [eax],al
0060C723 0000             add [eax],al
0060C725 0000             add [eax],al
0060C727 0000             add [eax],al
0060C729 0000             add [eax],al
0060C72B 0000             add [eax],al
0060C72D 0000             add [eax],al
0060C72F 0000             add [eax],al
0060C731 0000             add [eax],al
0060C733 0000             add [eax],al
0060C735 0000             add [eax],al
0060C737 0000             add [eax],al
0060C739 0000             add [eax],al
0060C73B 0000             add [eax],al
0060C73D 0000             add [eax],al
0060C73F 0000             add [eax],al
0060C741 0000             add [eax],al
0060C743 0000             add [eax],al
0060C745 0000             add [eax],al
0060C747 0000             add [eax],al
0060C749 0000             add [eax],al
0060C74B 0000             add [eax],al
0060C74D 0000             add [eax],al
0060C74F 0000             add [eax],al
0060C751 0000             add [eax],al
0060C753 0000             add [eax],al
0060C755 0000             add [eax],al
0060C757 0000             add [eax],al
0060C759 0000             add [eax],al
0060C75B 0000             add [eax],al
0060C75D 0000             add [eax],al
0060C75F 0000             add [eax],al
0060C761 0000             add [eax],al
0060C763 0000             add [eax],al
0060C765 0000             add [eax],al
0060C767 0000             add [eax],al
0060C769 0000             add [eax],al
0060C76B 0000             add [eax],al
0060C76D 0000             add [eax],al
0060C76F 0000             add [eax],al
0060C771 0000             add [eax],al
0060C773 0000             add [eax],al
0060C775 0000             add [eax],al
0060C777 0000             add [eax],al
0060C779 0000             add [eax],al
0060C77B 0000             add [eax],al
0060C77D 0000             add [eax],al
0060C77F 0000             add [eax],al
0060C781 0000             add [eax],al
0060C783 0000             add [eax],al
0060C785 0000             add [eax],al
0060C787 0000             add [eax],al
0060C789 0000             add [eax],al
0060C78B 0000             add [eax],al
0060C78D 0000             add [eax],al
0060C78F 0000             add [eax],al
0060C791 0000             add [eax],al
0060C793 0000             add [eax],al
0060C795 0000             add [eax],al
0060C797 0000             add [eax],al
0060C799 0000             add [eax],al
0060C79B 0000             add [eax],al
0060C79D 0000             add [eax],al
0060C79F 0000             add [eax],al
0060C7A1 0000             add [eax],al
0060C7A3 0000             add [eax],al
0060C7A5 0000             add [eax],al
0060C7A7 0000             add [eax],al
0060C7A9 0000             add [eax],al
0060C7AB 0000             add [eax],al
0060C7AD 0000             add [eax],al
0060C7AF 0000             add [eax],al
0060C7B1 0000             add [eax],al
0060C7B3 0000             add [eax],al
0060C7B5 0000             add [eax],al
0060C7B7 0000             add [eax],al
0060C7B9 0000             add [eax],al
0060C7BB 0000             add [eax],al
0060C7BD 0000             add [eax],al
0060C7BF 0000             add [eax],al
0060C7C1 0000             add [eax],al
0060C7C3 0000             add [eax],al
0060C7C5 0000             add [eax],al
0060C7C7 0000             add [eax],al
0060C7C9 0000             add [eax],al
0060C7CB 0000             add [eax],al
0060C7CD 0000             add [eax],al
0060C7CF 0000             add [eax],al
0060C7D1 0000             add [eax],al
0060C7D3 0000             add [eax],al
0060C7D5 0000             add [eax],al
0060C7D7 0000             add [eax],al
0060C7D9 0000             add [eax],al
0060C7DB 0000             add [eax],al
0060C7DD 0000             add [eax],al
0060C7DF 0000             add [eax],al
0060C7E1 0000             add [eax],al
0060C7E3 0000             add [eax],al
0060C7E5 0000             add [eax],al
0060C7E7 0000             add [eax],al
0060C7E9 0000             add [eax],al
0060C7EB 0000             add [eax],al
0060C7ED 0000             add [eax],al
0060C7EF 0000             add [eax],al
0060C7F1 0000             add [eax],al
0060C7F3 0000             add [eax],al
0060C7F5 0000             add [eax],al
0060C7F7 0000             add [eax],al
0060C7F9 0000             add [eax],al
0060C7FB 0000             add [eax],al
0060C7FD 0000             add [eax],al
0060C7FF 0000             add [eax],al
0060C801 0000             add [eax],al
0060C803 0000             add [eax],al
0060C805 0000             add [eax],al
0060C807 0000             add [eax],al
0060C809 0000             add [eax],al
0060C80B 0000             add [eax],al
0060C80D 0000             add [eax],al
0060C80F 0000             add [eax],al
0060C811 0000             add [eax],al
0060C813 0000             add [eax],al
0060C815 0000             add [eax],al
0060C817 0000             add [eax],al
0060C819 0000             add [eax],al
0060C81B 0000             add [eax],al
0060C81D 0000             add [eax],al
0060C81F 0000             add [eax],al
0060C821 0000             add [eax],al
0060C823 0000             add [eax],al
0060C825 0000             add [eax],al
0060C827 0000             add [eax],al
0060C829 0000             add [eax],al
0060C82B 0000             add [eax],al
0060C82D 0000             add [eax],al
0060C82F 0000             add [eax],al
0060C831 0000             add [eax],al
0060C833 0000             add [eax],al
0060C835 0000             add [eax],al
0060C837 0000             add [eax],al
0060C839 0000             add [eax],al
0060C83B 0000             add [eax],al
0060C83D 0000             add [eax],al
0060C83F 0000             add [eax],al
0060C841 0000             add [eax],al
0060C843 0000             add [eax],al
0060C845 0000             add [eax],al
0060C847 0000             add [eax],al
0060C849 0000             add [eax],al
0060C84B 0000             add [eax],al
0060C84D 0000             add [eax],al
0060C84F 0000             add [eax],al
0060C851 0000             add [eax],al
0060C853 0000             add [eax],al
0060C855 0000             add [eax],al
0060C857 0000             add [eax],al
0060C859 0000             add [eax],al
0060C85B 0000             add [eax],al
0060C85D 0000             add [eax],al
0060C85F 0000             add [eax],al
0060C861 0000             add [eax],al
0060C863 0000             add [eax],al
0060C865 0000             add [eax],al
0060C867 0000             add [eax],al
0060C869 0000             add [eax],al
0060C86B 0000             add [eax],al
0060C86D 0000             add [eax],al
0060C86F 0000             add [eax],al
0060C871 0000             add [eax],al
0060C873 0000             add [eax],al
0060C875 0000             add [eax],al
0060C877 0000             add [eax],al
0060C879 0000             add [eax],al
0060C87B 0000             add [eax],al
0060C87D 0000             add [eax],al
0060C87F 0000             add [eax],al
0060C881 0000             add [eax],al
0060C883 0000             add [eax],al
0060C885 0000             add [eax],al
0060C887 0000             add [eax],al
0060C889 0000             add [eax],al
0060C88B 0000             add [eax],al
0060C88D 0000             add [eax],al
0060C88F 0000             add [eax],al
0060C891 0000             add [eax],al
0060C893 0000             add [eax],al
0060C895 0000             add [eax],al
0060C897 0000             add [eax],al
0060C899 0000             add [eax],al
0060C89B 0000             add [eax],al
0060C89D 0000             add [eax],al
0060C89F 0000             add [eax],al
0060C8A1 0000             add [eax],al
0060C8A3 0000             add [eax],al
0060C8A5 0000             add [eax],al
0060C8A7 0000             add [eax],al
0060C8A9 0000             add [eax],al
0060C8AB 0000             add [eax],al
0060C8AD 0000             add [eax],al
0060C8AF 0000             add [eax],al
0060C8B1 0000             add [eax],al
0060C8B3 0000             add [eax],al
0060C8B5 0000             add [eax],al
0060C8B7 0000             add [eax],al
0060C8B9 0000             add [eax],al
0060C8BB 0000             add [eax],al
0060C8BD 0000             add [eax],al
0060C8BF 0000             add [eax],al
0060C8C1 0000             add [eax],al
0060C8C3 0000             add [eax],al
0060C8C5 0000             add [eax],al
0060C8C7 0000             add [eax],al
0060C8C9 0000             add [eax],al
0060C8CB 0000             add [eax],al
0060C8CD 0000             add [eax],al
0060C8CF 0000             add [eax],al
0060C8D1 0000             add [eax],al
0060C8D3 0000             add [eax],al
0060C8D5 0000             add [eax],al
0060C8D7 0000             add [eax],al
0060C8D9 0000             add [eax],al
0060C8DB 0000             add [eax],al
0060C8DD 0000             add [eax],al
0060C8DF 0000             add [eax],al
0060C8E1 0000             add [eax],al
0060C8E3 0000             add [eax],al
0060C8E5 0000             add [eax],al
0060C8E7 0000             add [eax],al
0060C8E9 0000             add [eax],al
0060C8EB 0000             add [eax],al
0060C8ED 0000             add [eax],al
0060C8EF 0000             add [eax],al
0060C8F1 0000             add [eax],al
0060C8F3 0000             add [eax],al
0060C8F5 0000             add [eax],al
0060C8F7 0000             add [eax],al
0060C8F9 0000             add [eax],al
0060C8FB 0000             add [eax],al
0060C8FD 0000             add [eax],al
0060C8FF 0000             add [eax],al
0060C901 0000             add [eax],al
0060C903 0000             add [eax],al
0060C905 0000             add [eax],al
0060C907 0000             add [eax],al
0060C909 0000             add [eax],al
0060C90B 0000             add [eax],al
0060C90D 0000             add [eax],al
0060C90F 0000             add [eax],al
0060C911 0000             add [eax],al
0060C913 0000             add [eax],al
0060C915 0000             add [eax],al
0060C917 0000             add [eax],al
0060C919 0000             add [eax],al
0060C91B 0000             add [eax],al
0060C91D 0000             add [eax],al
0060C91F 0000             add [eax],al
0060C921 0000             add [eax],al
0060C923 0000             add [eax],al
0060C925 0000             add [eax],al
0060C927 0000             add [eax],al
0060C929 0000             add [eax],al
0060C92B 0000             add [eax],al
0060C92D 0000             add [eax],al
0060C92F 0000             add [eax],al
0060C931 0000             add [eax],al
0060C933 0000             add [eax],al
0060C935 0000             add [eax],al
0060C937 0000             add [eax],al
0060C939 0000             add [eax],al
0060C93B 0000             add [eax],al
0060C93D 0000             add [eax],al
0060C93F 0000             add [eax],al
0060C941 0000             add [eax],al
0060C943 0000             add [eax],al
0060C945 0000             add [eax],al
0060C947 0000             add [eax],al
0060C949 0000             add [eax],al
0060C94B 0000             add [eax],al
0060C94D 0000             add [eax],al
0060C94F 0000             add [eax],al
0060C951 0000             add [eax],al
0060C953 0000             add [eax],al
0060C955 0000             add [eax],al
0060C957 0000             add [eax],al
0060C959 0000             add [eax],al
0060C95B 0000             add [eax],al
0060C95D 0000             add [eax],al
0060C95F 0000             add [eax],al
0060C961 0000             add [eax],al
0060C963 0000             add [eax],al
0060C965 0000             add [eax],al
0060C967 0000             add [eax],al
0060C969 0000             add [eax],al
0060C96B 0000             add [eax],al
0060C96D 0000             add [eax],al
0060C96F 0000             add [eax],al
0060C971 0000             add [eax],al
0060C973 0000             add [eax],al
0060C975 0000             add [eax],al
0060C977 0000             add [eax],al
0060C979 0000             add [eax],al
0060C97B 0000             add [eax],al
0060C97D 0000             add [eax],al
0060C97F 0000             add [eax],al
0060C981 0000             add [eax],al
0060C983 0000             add [eax],al
0060C985 0000             add [eax],al
0060C987 0000             add [eax],al
0060C989 0000             add [eax],al
0060C98B 0000             add [eax],al
0060C98D 0000             add [eax],al
0060C98F 0000             add [eax],al
0060C991 0000             add [eax],al
0060C993 0000             add [eax],al
0060C995 0000             add [eax],al
0060C997 0000             add [eax],al
0060C999 0000             add [eax],al
0060C99B 0000             add [eax],al
0060C99D 0000             add [eax],al
0060C99F 0000             add [eax],al
0060C9A1 0000             add [eax],al
0060C9A3 0000             add [eax],al
0060C9A5 0000             add [eax],al
0060C9A7 0000             add [eax],al
0060C9A9 0000             add [eax],al
0060C9AB 0000             add [eax],al
0060C9AD 0000             add [eax],al
0060C9AF 0000             add [eax],al
0060C9B1 0000             add [eax],al
0060C9B3 0000             add [eax],al
0060C9B5 0000             add [eax],al
0060C9B7 0000             add [eax],al
0060C9B9 0000             add [eax],al
0060C9BB 0000             add [eax],al
0060C9BD 0000             add [eax],al
0060C9BF 0000             add [eax],al
0060C9C1 0000             add [eax],al
0060C9C3 0000             add [eax],al
0060C9C5 0000             add [eax],al
0060C9C7 0000             add [eax],al
0060C9C9 0000             add [eax],al
0060C9CB 0000             add [eax],al
0060C9CD 0000             add [eax],al
0060C9CF 0000             add [eax],al
0060C9D1 0000             add [eax],al
0060C9D3 0000             add [eax],al
0060C9D5 0000             add [eax],al
0060C9D7 0000             add [eax],al
0060C9D9 0000             add [eax],al
0060C9DB 0000             add [eax],al
0060C9DD 0000             add [eax],al
0060C9DF 0000             add [eax],al
0060C9E1 0000             add [eax],al
0060C9E3 0000             add [eax],al
0060C9E5 0000             add [eax],al
0060C9E7 0000             add [eax],al
0060C9E9 0000             add [eax],al
0060C9EB 0000             add [eax],al
0060C9ED 0000             add [eax],al
0060C9EF 0000             add [eax],al
0060C9F1 0000             add [eax],al
0060C9F3 0000             add [eax],al
0060C9F5 0000             add [eax],al
0060C9F7 0000             add [eax],al
0060C9F9 0000             add [eax],al
0060C9FB 0000             add [eax],al
0060C9FD 0000             add [eax],al
0060C9FF 0000             add [eax],al
0060CA01 0000             add [eax],al
0060CA03 0000             add [eax],al
0060CA05 0000             add [eax],al
0060CA07 0000             add [eax],al
0060CA09 0000             add [eax],al
0060CA0B 0000             add [eax],al
0060CA0D 0000             add [eax],al
0060CA0F 0000             add [eax],al
0060CA11 0000             add [eax],al
0060CA13 0000             add [eax],al
0060CA15 0000             add [eax],al
0060CA17 0000             add [eax],al
0060CA19 0000             add [eax],al
0060CA1B 0000             add [eax],al
0060CA1D 0000             add [eax],al
0060CA1F 0000             add [eax],al
0060CA21 0000             add [eax],al
0060CA23 0000             add [eax],al
0060CA25 0000             add [eax],al
0060CA27 0000             add [eax],al
0060CA29 0000             add [eax],al
0060CA2B 0000             add [eax],al
0060CA2D 0000             add [eax],al
0060CA2F 0000             add [eax],al
0060CA31 0000             add [eax],al
0060CA33 0000             add [eax],al
0060CA35 0000             add [eax],al
0060CA37 0000             add [eax],al
0060CA39 0000             add [eax],al
0060CA3B 0000             add [eax],al
0060CA3D 0000             add [eax],al
0060CA3F 0000             add [eax],al
0060CA41 0000             add [eax],al
0060CA43 0000             add [eax],al
0060CA45 0000             add [eax],al
0060CA47 0000             add [eax],al
0060CA49 0000             add [eax],al
0060CA4B 0000             add [eax],al
0060CA4D 0000             add [eax],al
0060CA4F 0000             add [eax],al
0060CA51 0000             add [eax],al
0060CA53 0000             add [eax],al
0060CA55 0000             add [eax],al
0060CA57 0000             add [eax],al
0060CA59 0000             add [eax],al
0060CA5B 0000             add [eax],al
0060CA5D 0000             add [eax],al
0060CA5F 0000             add [eax],al
0060CA61 0000             add [eax],al
0060CA63 0000             add [eax],al
0060CA65 0000             add [eax],al
0060CA67 0000             add [eax],al
0060CA69 0000             add [eax],al
0060CA6B 0000             add [eax],al
0060CA6D 0000             add [eax],al
0060CA6F 0000             add [eax],al
0060CA71 0000             add [eax],al
0060CA73 0000             add [eax],al
0060CA75 0000             add [eax],al
0060CA77 0000             add [eax],al
0060CA79 0000             add [eax],al
0060CA7B 0000             add [eax],al
0060CA7D 0000             add [eax],al
0060CA7F 0000             add [eax],al
0060CA81 0000             add [eax],al
0060CA83 0000             add [eax],al
0060CA85 0000             add [eax],al
0060CA87 0000             add [eax],al
0060CA89 0000             add [eax],al
0060CA8B 0000             add [eax],al
0060CA8D 0000             add [eax],al
0060CA8F 0000             add [eax],al
0060CA91 0000             add [eax],al
0060CA93 0000             add [eax],al
0060CA95 0000             add [eax],al
0060CA97 0000             add [eax],al
0060CA99 0000             add [eax],al
0060CA9B 0000             add [eax],al
0060CA9D 0000             add [eax],al
0060CA9F 0000             add [eax],al
0060CAA1 0000             add [eax],al
0060CAA3 0000             add [eax],al
0060CAA5 0000             add [eax],al
0060CAA7 0000             add [eax],al
0060CAA9 0000             add [eax],al
0060CAAB 0000             add [eax],al
0060CAAD 0000             add [eax],al
0060CAAF 0000             add [eax],al
0060CAB1 0000             add [eax],al
0060CAB3 0000             add [eax],al
0060CAB5 0000             add [eax],al
0060CAB7 0000             add [eax],al
0060CAB9 0000             add [eax],al
0060CABB 0000             add [eax],al
0060CABD 0000             add [eax],al
0060CABF 0000             add [eax],al
0060CAC1 0000             add [eax],al
0060CAC3 0000             add [eax],al
0060CAC5 0000             add [eax],al
0060CAC7 0000             add [eax],al
0060CAC9 0000             add [eax],al
0060CACB 0000             add [eax],al
0060CACD 0000             add [eax],al
0060CACF 0000             add [eax],al
0060CAD1 0000             add [eax],al
0060CAD3 0000             add [eax],al
0060CAD5 0000             add [eax],al
0060CAD7 0000             add [eax],al
0060CAD9 0000             add [eax],al
0060CADB 0000             add [eax],al
0060CADD 0000             add [eax],al
0060CADF 0000             add [eax],al
0060CAE1 0000             add [eax],al
0060CAE3 0000             add [eax],al
0060CAE5 0000             add [eax],al
0060CAE7 0000             add [eax],al
0060CAE9 0000             add [eax],al
0060CAEB 0000             add [eax],al
0060CAED 0000             add [eax],al
0060CAEF 0000             add [eax],al
0060CAF1 0000             add [eax],al
0060CAF3 0000             add [eax],al
0060CAF5 0000             add [eax],al
0060CAF7 0000             add [eax],al
0060CAF9 0000             add [eax],al
0060CAFB 0000             add [eax],al
0060CAFD 0000             add [eax],al
0060CAFF 0000             add [eax],al
0060CB01 0000             add [eax],al
0060CB03 0000             add [eax],al
0060CB05 0000             add [eax],al
0060CB07 0000             add [eax],al
0060CB09 0000             add [eax],al
0060CB0B 0000             add [eax],al
0060CB0D 0000             add [eax],al
0060CB0F 0000             add [eax],al
0060CB11 0000             add [eax],al
0060CB13 0000             add [eax],al
0060CB15 0000             add [eax],al
0060CB17 0000             add [eax],al
0060CB19 0000             add [eax],al
0060CB1B 0000             add [eax],al
0060CB1D 0000             add [eax],al
0060CB1F 0000             add [eax],al
0060CB21 0000             add [eax],al
0060CB23 0000             add [eax],al
0060CB25 0000             add [eax],al
0060CB27 0000             add [eax],al
0060CB29 0000             add [eax],al
0060CB2B 0000             add [eax],al
0060CB2D 0000             add [eax],al
0060CB2F 0000             add [eax],al
0060CB31 0000             add [eax],al
0060CB33 0000             add [eax],al
0060CB35 0000             add [eax],al
0060CB37 0000             add [eax],al
0060CB39 0000             add [eax],al
0060CB3B 0000             add [eax],al
0060CB3D 0000             add [eax],al
0060CB3F 0000             add [eax],al
0060CB41 0000             add [eax],al
0060CB43 0000             add [eax],al
0060CB45 0000             add [eax],al
0060CB47 0000             add [eax],al
0060CB49 0000             add [eax],al
0060CB4B 0000             add [eax],al
0060CB4D 0000             add [eax],al
0060CB4F 0000             add [eax],al
0060CB51 0000             add [eax],al
0060CB53 0000             add [eax],al
0060CB55 0000             add [eax],al
0060CB57 0000             add [eax],al
0060CB59 0000             add [eax],al
0060CB5B 0000             add [eax],al
0060CB5D 0000             add [eax],al
0060CB5F 0000             add [eax],al
0060CB61 0000             add [eax],al
0060CB63 0000             add [eax],al
0060CB65 0000             add [eax],al
0060CB67 0000             add [eax],al
0060CB69 0000             add [eax],al
0060CB6B 0000             add [eax],al
0060CB6D 0000             add [eax],al
0060CB6F 0000             add [eax],al
0060CB71 0000             add [eax],al
0060CB73 0000             add [eax],al
0060CB75 0000             add [eax],al
0060CB77 0000             add [eax],al
0060CB79 0000             add [eax],al
0060CB7B 0000             add [eax],al
0060CB7D 0000             add [eax],al
0060CB7F 0000             add [eax],al
0060CB81 0000             add [eax],al
0060CB83 0000             add [eax],al
0060CB85 0000             add [eax],al
0060CB87 0000             add [eax],al
0060CB89 0000             add [eax],al
0060CB8B 0000             add [eax],al
0060CB8D 0000             add [eax],al
0060CB8F 0000             add [eax],al
0060CB91 0000             add [eax],al
0060CB93 0000             add [eax],al
0060CB95 0000             add [eax],al
0060CB97 0000             add [eax],al
0060CB99 0000             add [eax],al
0060CB9B 0000             add [eax],al
0060CB9D 0000             add [eax],al
0060CB9F 0000             add [eax],al
0060CBA1 0000             add [eax],al
0060CBA3 0000             add [eax],al
0060CBA5 0000             add [eax],al
0060CBA7 0000             add [eax],al
0060CBA9 0000             add [eax],al
0060CBAB 0000             add [eax],al
0060CBAD 0000             add [eax],al
0060CBAF 0000             add [eax],al
0060CBB1 0000             add [eax],al
0060CBB3 0000             add [eax],al
0060CBB5 0000             add [eax],al
0060CBB7 0000             add [eax],al
0060CBB9 0000             add [eax],al
0060CBBB 0000             add [eax],al
0060CBBD 0000             add [eax],al
0060CBBF 0000             add [eax],al
0060CBC1 0000             add [eax],al
0060CBC3 0000             add [eax],al
0060CBC5 0000             add [eax],al
0060CBC7 0000             add [eax],al
0060CBC9 0000             add [eax],al
0060CBCB 0000             add [eax],al
0060CBCD 0000             add [eax],al
0060CBCF 0000             add [eax],al
0060CBD1 0000             add [eax],al
0060CBD3 0000             add [eax],al
0060CBD5 0000             add [eax],al
0060CBD7 0000             add [eax],al
0060CBD9 0000             add [eax],al
0060CBDB 0000             add [eax],al
0060CBDD 0000             add [eax],al
0060CBDF 0000             add [eax],al
0060CBE1 0000             add [eax],al
0060CBE3 0000             add [eax],al
0060CBE5 0000             add [eax],al
0060CBE7 0000             add [eax],al
0060CBE9 0000             add [eax],al
0060CBEB 0000             add [eax],al
0060CBED 0000             add [eax],al
0060CBEF 0000             add [eax],al
0060CBF1 0000             add [eax],al
0060CBF3 0000             add [eax],al
0060CBF5 0000             add [eax],al
0060CBF7 0000             add [eax],al
0060CBF9 0000             add [eax],al
0060CBFB 0000             add [eax],al
0060CBFD 0000             add [eax],al
0060CBFF 0000             add [eax],al
0060CC01 0000             add [eax],al
0060CC03 0000             add [eax],al
0060CC05 0000             add [eax],al
0060CC07 0000             add [eax],al
0060CC09 0000             add [eax],al
0060CC0B 0000             add [eax],al
0060CC0D 0000             add [eax],al
0060CC0F 0000             add [eax],al
0060CC11 0000             add [eax],al
0060CC13 0000             add [eax],al
0060CC15 0000             add [eax],al
0060CC17 0000             add [eax],al
0060CC19 0000             add [eax],al
0060CC1B 0000             add [eax],al
0060CC1D 0000             add [eax],al
0060CC1F 0000             add [eax],al
0060CC21 0000             add [eax],al
0060CC23 0000             add [eax],al
0060CC25 0000             add [eax],al
0060CC27 0000             add [eax],al
0060CC29 0000             add [eax],al
0060CC2B 0000             add [eax],al
0060CC2D 0000             add [eax],al
0060CC2F 0000             add [eax],al
0060CC31 0000             add [eax],al
0060CC33 0000             add [eax],al
0060CC35 0000             add [eax],al
0060CC37 0000             add [eax],al
0060CC39 0000             add [eax],al
0060CC3B 0000             add [eax],al
0060CC3D 0000             add [eax],al
0060CC3F 0000             add [eax],al
0060CC41 0000             add [eax],al
0060CC43 0000             add [eax],al
0060CC45 0000             add [eax],al
0060CC47 0000             add [eax],al
0060CC49 0000             add [eax],al
0060CC4B 0000             add [eax],al
0060CC4D 0000             add [eax],al
0060CC4F 0000             add [eax],al
0060CC51 0000             add [eax],al
0060CC53 0000             add [eax],al
0060CC55 0000             add [eax],al
0060CC57 0000             add [eax],al
0060CC59 0000             add [eax],al
0060CC5B 0000             add [eax],al
0060CC5D 0000             add [eax],al
0060CC5F 0000             add [eax],al
0060CC61 0000             add [eax],al
0060CC63 0000             add [eax],al
0060CC65 0000             add [eax],al
0060CC67 0000             add [eax],al
0060CC69 0000             add [eax],al
0060CC6B 0000             add [eax],al
0060CC6D 0000             add [eax],al
0060CC6F 0000             add [eax],al
0060CC71 0000             add [eax],al
0060CC73 0000             add [eax],al
0060CC75 0000             add [eax],al
0060CC77 0000             add [eax],al
0060CC79 0000             add [eax],al
0060CC7B 0000             add [eax],al
0060CC7D 0000             add [eax],al
0060CC7F 0000             add [eax],al
0060CC81 0000             add [eax],al
0060CC83 0000             add [eax],al
0060CC85 0000             add [eax],al
0060CC87 0000             add [eax],al
0060CC89 0000             add [eax],al
0060CC8B 0000             add [eax],al
0060CC8D 0000             add [eax],al
0060CC8F 0000             add [eax],al
0060CC91 0000             add [eax],al
0060CC93 0000             add [eax],al
0060CC95 0000             add [eax],al
0060CC97 0000             add [eax],al
0060CC99 0000             add [eax],al
0060CC9B 0000             add [eax],al
0060CC9D 0000             add [eax],al
0060CC9F 0000             add [eax],al
0060CCA1 0000             add [eax],al
0060CCA3 0000             add [eax],al
0060CCA5 0000             add [eax],al
0060CCA7 0000             add [eax],al
0060CCA9 0000             add [eax],al
0060CCAB 0000             add [eax],al
0060CCAD 0000             add [eax],al
0060CCAF 0000             add [eax],al
0060CCB1 0000             add [eax],al
0060CCB3 0000             add [eax],al
0060CCB5 0000             add [eax],al
0060CCB7 0000             add [eax],al
0060CCB9 0000             add [eax],al
0060CCBB 0000             add [eax],al
0060CCBD 0000             add [eax],al
0060CCBF 0000             add [eax],al
0060CCC1 0000             add [eax],al
0060CCC3 0000             add [eax],al
0060CCC5 0000             add [eax],al
0060CCC7 0000             add [eax],al
0060CCC9 0000             add [eax],al
0060CCCB 0000             add [eax],al
0060CCCD 0000             add [eax],al
0060CCCF 0000             add [eax],al
0060CCD1 0000             add [eax],al
0060CCD3 0000             add [eax],al
0060CCD5 0000             add [eax],al
0060CCD7 0000             add [eax],al
0060CCD9 0000             add [eax],al
0060CCDB 0000             add [eax],al
0060CCDD 0000             add [eax],al
0060CCDF 0000             add [eax],al
0060CCE1 0000             add [eax],al
0060CCE3 0000             add [eax],al
0060CCE5 0000             add [eax],al
0060CCE7 0000             add [eax],al
0060CCE9 0000             add [eax],al
0060CCEB 0000             add [eax],al
0060CCED 0000             add [eax],al
0060CCEF 0000             add [eax],al
0060CCF1 0000             add [eax],al
0060CCF3 0000             add [eax],al
0060CCF5 0000             add [eax],al
0060CCF7 0000             add [eax],al
0060CCF9 0000             add [eax],al
0060CCFB 0000             add [eax],al
0060CCFD 0000             add [eax],al
0060CCFF 0000             add [eax],al
0060CD01 0000             add [eax],al
0060CD03 0000             add [eax],al
0060CD05 0000             add [eax],al
0060CD07 0000             add [eax],al
0060CD09 0000             add [eax],al
0060CD0B 0000             add [eax],al
0060CD0D 0000             add [eax],al
0060CD0F 0000             add [eax],al
0060CD11 0000             add [eax],al
0060CD13 0000             add [eax],al
0060CD15 0000             add [eax],al
0060CD17 0000             add [eax],al
0060CD19 0000             add [eax],al
0060CD1B 0000             add [eax],al
0060CD1D 0000             add [eax],al
0060CD1F 0000             add [eax],al
0060CD21 0000             add [eax],al
0060CD23 0000             add [eax],al
0060CD25 0000             add [eax],al
0060CD27 0000             add [eax],al
0060CD29 0000             add [eax],al
0060CD2B 0000             add [eax],al
0060CD2D 0000             add [eax],al
0060CD2F 0000             add [eax],al
0060CD31 0000             add [eax],al
0060CD33 0000             add [eax],al
0060CD35 0000             add [eax],al
0060CD37 0000             add [eax],al
0060CD39 0000             add [eax],al
0060CD3B 0000             add [eax],al
0060CD3D 0000             add [eax],al
0060CD3F 0000             add [eax],al
0060CD41 0000             add [eax],al
0060CD43 0000             add [eax],al
0060CD45 0000             add [eax],al
0060CD47 0000             add [eax],al
0060CD49 0000             add [eax],al
0060CD4B 0000             add [eax],al
0060CD4D 0000             add [eax],al
0060CD4F 0000             add [eax],al
0060CD51 0000             add [eax],al
0060CD53 0000             add [eax],al
0060CD55 0000             add [eax],al
0060CD57 0000             add [eax],al
0060CD59 0000             add [eax],al
0060CD5B 0000             add [eax],al
0060CD5D 0000             add [eax],al
0060CD5F 0000             add [eax],al
0060CD61 0000             add [eax],al
0060CD63 0000             add [eax],al
0060CD65 0000             add [eax],al
0060CD67 0000             add [eax],al
0060CD69 0000             add [eax],al
0060CD6B 0000             add [eax],al
0060CD6D 0000             add [eax],al
0060CD6F 0000             add [eax],al
0060CD71 0000             add [eax],al
0060CD73 0000             add [eax],al
0060CD75 0000             add [eax],al
0060CD77 0000             add [eax],al
0060CD79 0000             add [eax],al
0060CD7B 0000             add [eax],al
0060CD7D 0000             add [eax],al
0060CD7F 0000             add [eax],al
0060CD81 0000             add [eax],al
0060CD83 0000             add [eax],al
0060CD85 0000             add [eax],al
0060CD87 0000             add [eax],al
0060CD89 0000             add [eax],al
0060CD8B 0000             add [eax],al
0060CD8D 0000             add [eax],al
0060CD8F 0000             add [eax],al
0060CD91 0000             add [eax],al
0060CD93 0000             add [eax],al
0060CD95 0000             add [eax],al
0060CD97 0000             add [eax],al
0060CD99 0000             add [eax],al
0060CD9B 0000             add [eax],al
0060CD9D 0000             add [eax],al
0060CD9F 0000             add [eax],al
0060CDA1 0000             add [eax],al
0060CDA3 0000             add [eax],al
0060CDA5 0000             add [eax],al
0060CDA7 0000             add [eax],al
0060CDA9 0000             add [eax],al
0060CDAB 0000             add [eax],al
0060CDAD 0000             add [eax],al
0060CDAF 0000             add [eax],al
0060CDB1 0000             add [eax],al
0060CDB3 0000             add [eax],al
0060CDB5 0000             add [eax],al
0060CDB7 0000             add [eax],al
0060CDB9 0000             add [eax],al
0060CDBB 0000             add [eax],al
0060CDBD 0000             add [eax],al
0060CDBF 0000             add [eax],al
0060CDC1 0000             add [eax],al
0060CDC3 0000             add [eax],al
0060CDC5 0000             add [eax],al
0060CDC7 0000             add [eax],al
0060CDC9 0000             add [eax],al
0060CDCB 0000             add [eax],al
0060CDCD 0000             add [eax],al
0060CDCF 0000             add [eax],al
0060CDD1 0000             add [eax],al
0060CDD3 0000             add [eax],al
0060CDD5 0000             add [eax],al
0060CDD7 0000             add [eax],al
0060CDD9 0000             add [eax],al
0060CDDB 0000             add [eax],al
0060CDDD 0000             add [eax],al
0060CDDF 0000             add [eax],al
0060CDE1 0000             add [eax],al
0060CDE3 0000             add [eax],al
0060CDE5 0000             add [eax],al
0060CDE7 0000             add [eax],al
0060CDE9 0000             add [eax],al
0060CDEB 0000             add [eax],al
0060CDED 0000             add [eax],al
0060CDEF 0000             add [eax],al
0060CDF1 0000             add [eax],al
0060CDF3 0000             add [eax],al
0060CDF5 0000             add [eax],al
0060CDF7 0000             add [eax],al
0060CDF9 0000             add [eax],al
0060CDFB 0000             add [eax],al
0060CDFD 0000             add [eax],al
0060CDFF 0000             add [eax],al
0060CE01 0000             add [eax],al
0060CE03 0000             add [eax],al
0060CE05 0000             add [eax],al
0060CE07 0000             add [eax],al
0060CE09 0000             add [eax],al
0060CE0B 0000             add [eax],al
0060CE0D 0000             add [eax],al
0060CE0F 0000             add [eax],al
0060CE11 0000             add [eax],al
0060CE13 0000             add [eax],al
0060CE15 0000             add [eax],al
0060CE17 0000             add [eax],al
0060CE19 0000             add [eax],al
0060CE1B 0000             add [eax],al
0060CE1D 0000             add [eax],al
0060CE1F 0000             add [eax],al
0060CE21 0000             add [eax],al
0060CE23 0000             add [eax],al
0060CE25 0000             add [eax],al
0060CE27 0000             add [eax],al
0060CE29 0000             add [eax],al
0060CE2B 0000             add [eax],al
0060CE2D 0000             add [eax],al
0060CE2F 0000             add [eax],al
0060CE31 0000             add [eax],al
0060CE33 0000             add [eax],al
0060CE35 0000             add [eax],al
0060CE37 0000             add [eax],al
0060CE39 0000             add [eax],al
0060CE3B 0000             add [eax],al
0060CE3D 0000             add [eax],al
0060CE3F 0000             add [eax],al
0060CE41 0000             add [eax],al
0060CE43 0000             add [eax],al
0060CE45 0000             add [eax],al
0060CE47 0000             add [eax],al
0060CE49 0000             add [eax],al
0060CE4B 0000             add [eax],al
0060CE4D 0000             add [eax],al
0060CE4F 0000             add [eax],al
0060CE51 0000             add [eax],al
0060CE53 0000             add [eax],al
0060CE55 0000             add [eax],al
0060CE57 0000             add [eax],al
0060CE59 0000             add [eax],al
0060CE5B 0000             add [eax],al
0060CE5D 0000             add [eax],al
0060CE5F 0000             add [eax],al
0060CE61 0000             add [eax],al
0060CE63 0000             add [eax],al
0060CE65 0000             add [eax],al
0060CE67 0000             add [eax],al
0060CE69 0000             add [eax],al
0060CE6B 0000             add [eax],al
0060CE6D 0000             add [eax],al
0060CE6F 0000             add [eax],al
0060CE71 0000             add [eax],al
0060CE73 0000             add [eax],al
0060CE75 0000             add [eax],al
0060CE77 0000             add [eax],al
0060CE79 0000             add [eax],al
0060CE7B 0000             add [eax],al
0060CE7D 0000             add [eax],al
0060CE7F 0000             add [eax],al
0060CE81 0000             add [eax],al
0060CE83 0000             add [eax],al
0060CE85 0000             add [eax],al
0060CE87 0000             add [eax],al
0060CE89 0000             add [eax],al
0060CE8B 0000             add [eax],al
0060CE8D 0000             add [eax],al
0060CE8F 0000             add [eax],al
0060CE91 0000             add [eax],al
0060CE93 0000             add [eax],al
0060CE95 0000             add [eax],al
0060CE97 0000             add [eax],al
0060CE99 0000             add [eax],al
0060CE9B 0000             add [eax],al
0060CE9D 0000             add [eax],al
0060CE9F 0000             add [eax],al
0060CEA1 0000             add [eax],al
0060CEA3 0000             add [eax],al
0060CEA5 0000             add [eax],al
0060CEA7 0000             add [eax],al
0060CEA9 0000             add [eax],al
0060CEAB 0000             add [eax],al
0060CEAD 0000             add [eax],al
0060CEAF 0000             add [eax],al
0060CEB1 0000             add [eax],al
0060CEB3 0000             add [eax],al
0060CEB5 0000             add [eax],al
0060CEB7 0000             add [eax],al
0060CEB9 0000             add [eax],al
0060CEBB 0000             add [eax],al
0060CEBD 0000             add [eax],al
0060CEBF 0000             add [eax],al
0060CEC1 0000             add [eax],al
0060CEC3 0000             add [eax],al
0060CEC5 0000             add [eax],al
0060CEC7 0000             add [eax],al
0060CEC9 0000             add [eax],al
0060CECB 0000             add [eax],al
0060CECD 0000             add [eax],al
0060CECF 0000             add [eax],al
0060CED1 0000             add [eax],al
0060CED3 0000             add [eax],al
0060CED5 0000             add [eax],al
0060CED7 0000             add [eax],al
0060CED9 0000             add [eax],al
0060CEDB 0000             add [eax],al
0060CEDD 0000             add [eax],al
0060CEDF 0000             add [eax],al
0060CEE1 0000             add [eax],al
0060CEE3 0000             add [eax],al
0060CEE5 0000             add [eax],al
0060CEE7 0000             add [eax],al
0060CEE9 0000             add [eax],al
0060CEEB 0000             add [eax],al
0060CEED 0000             add [eax],al
0060CEEF 0000             add [eax],al
0060CEF1 0000             add [eax],al
0060CEF3 0000             add [eax],al
0060CEF5 0000             add [eax],al
0060CEF7 0000             add [eax],al
0060CEF9 0000             add [eax],al
0060CEFB 0000             add [eax],al
0060CEFD 0000             add [eax],al
0060CEFF 0000             add [eax],al
0060CF01 0000             add [eax],al
0060CF03 0000             add [eax],al
0060CF05 0000             add [eax],al
0060CF07 0000             add [eax],al
0060CF09 0000             add [eax],al
0060CF0B 0000             add [eax],al
0060CF0D 0000             add [eax],al
0060CF0F 0000             add [eax],al
0060CF11 0000             add [eax],al
0060CF13 0000             add [eax],al
0060CF15 0000             add [eax],al
0060CF17 0000             add [eax],al
0060CF19 0000             add [eax],al
0060CF1B 0000             add [eax],al
0060CF1D 0000             add [eax],al
0060CF1F 0000             add [eax],al
0060CF21 0000             add [eax],al
0060CF23 0000             add [eax],al
0060CF25 0000             add [eax],al
0060CF27 0000             add [eax],al
0060CF29 0000             add [eax],al
0060CF2B 0000             add [eax],al
0060CF2D 0000             add [eax],al
0060CF2F 0000             add [eax],al
0060CF31 0000             add [eax],al
0060CF33 0000             add [eax],al
0060CF35 0000             add [eax],al
0060CF37 0000             add [eax],al
0060CF39 0000             add [eax],al
0060CF3B 0000             add [eax],al
0060CF3D 0000             add [eax],al
0060CF3F 0000             add [eax],al
0060CF41 0000             add [eax],al
0060CF43 0000             add [eax],al
0060CF45 0000             add [eax],al
0060CF47 0000             add [eax],al
0060CF49 0000             add [eax],al
0060CF4B 0000             add [eax],al
0060CF4D 0000             add [eax],al
0060CF4F 0000             add [eax],al
0060CF51 0000             add [eax],al
0060CF53 0000             add [eax],al
0060CF55 0000             add [eax],al
0060CF57 0000             add [eax],al
0060CF59 0000             add [eax],al
0060CF5B 0000             add [eax],al
0060CF5D 0000             add [eax],al
0060CF5F 0000             add [eax],al
0060CF61 0000             add [eax],al
0060CF63 0000             add [eax],al
0060CF65 0000             add [eax],al
0060CF67 0000             add [eax],al
0060CF69 0000             add [eax],al
0060CF6B 0000             add [eax],al
0060CF6D 0000             add [eax],al
0060CF6F 0000             add [eax],al
0060CF71 0000             add [eax],al
0060CF73 0000             add [eax],al

.........

...
Рейтинг: 0 / 0
int64 и перечисление в структуре
    #39466801
Фотография Квейд
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
НяшикBred eFeM,

Всё же, не помогло. выдаёт 12.271936 сек.

Код: pascal
1.
2.
3.
4.
    for i := 0 to 1000000000 - 1 do
    begin
      inc(L, i);
    end;



Хоть убей =___=

Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
var
  Stopwatch: TStopwatch;

procedure TForm3.FormCreate(Sender: TObject);
var
  I, L: Int64;
begin
  Stopwatch := TStopwatch.StartNew;

  for I := 0 to 1000000000 - 1 do
    Inc(L, I);

  ShowMessage(Stopwatch.Elapsed.TotalSeconds.ToString)
end;



[Window Title]
Project1

[Content]
3,5363013

[OK]
...
Рейтинг: 0 / 0
int64 и перечисление в структуре
    #39466805
Фотография Квейд
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Тот же код с включенной оптимизацией

[Window Title]
Project1

[Content]
2,6979584

[OK]
...
Рейтинг: 0 / 0
int64 и перечисление в структуре
    #39466811
Фотография Квейд
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Любопытно, если с Int64 перейти на Cardinal

[Window Title]
Project1

[Content]
0,3858178

[OK]

разница в 10 раз
...
Рейтинг: 0 / 0
int64 и перечисление в структуре
    #39466813
Bred eFeM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хоть убей =___=тю, тебе рассказывают-рассказывают, а ты и дальше всякую хрень лепишь ))

на, засекай:
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
type
TEngineVarTypes = (TInteger, TSingle, TDouble, TInt64, TPointer, TExtended);
_TSPHPValue = packed record
 case TEngineVarTypes of
  TInteger: (Integer : IntPtr);    // IntPtr ??
  TSingle:  (Single  : Single);
  TDouble:  (Double  : Double);
  TInt64:   (Int64   : Int64);
  TPointer: (Pointer : Pointer);
  TExtended:(Extended: Extended);
 end;
TSPHPValue = packed record
 _Data :_TSPHPValue;
 _Type :TEngineVarTypes;
end;
var
 i: Integer;
 V: TSPHPValue;
begin
 V._Type := TInt64;
 case V._Type of
  TInteger: ;
  TSingle: ;
  TDouble: ;
  TInt64:      for i := 0 to 1000050000 do Inc(V._Data.Int64);
  TPointer: ;
  TExtended: ;
 end;

...
Рейтинг: 0 / 0
int64 и перечисление в структуре
    #39466815
Няшик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
КвейдЛюбопытно, если с Int64 перейти на Cardinal

[Window Title]
Project1

[Content]
0,3858178

[OK]

разница в 10 раз


Да, но не стоит забывать что Cardinal не имеет отрицательного диапазона.. А вот если int64 поменять на integer то разница не большая... =_=
...
Рейтинг: 0 / 0
int64 и перечисление в структуре
    #39466817
Няшик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Bred eFeMХоть убей =___=тю, тебе рассказывают-рассказывают, а ты и дальше всякую хрень лепишь ))

на, засекай:
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
type
TEngineVarTypes = (TInteger, TSingle, TDouble, TInt64, TPointer, TExtended);
_TSPHPValue = packed record
 case TEngineVarTypes of
  TInteger: (Integer : IntPtr);    // IntPtr ??
  TSingle:  (Single  : Single);
  TDouble:  (Double  : Double);
  TInt64:   (Int64   : Int64);
  TPointer: (Pointer : Pointer);
  TExtended:(Extended: Extended);
 end;
TSPHPValue = packed record
 _Data :_TSPHPValue;
 _Type :TEngineVarTypes;
end;
var
 i: Integer;
 V: TSPHPValue;
begin
 V._Type := TInt64;
 case V._Type of
  TInteger: ;
  TSingle: ;
  TDouble: ;
  TInt64:      for i := 0 to 1000050000 do Inc(V._Data.Int64);
  TPointer: ;
  TExtended: ;
 end;



Ну и что тут изменилось от моего кода ? Всё равно в структуре int64 которая с генерирует дохрена машинного кода как уже выяснялось.. Что с packed что без него
...
Рейтинг: 0 / 0
int64 и перечисление в структуре
    #39466825
Няшик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Bred eFeMХоть убей =___=тю, тебе рассказывают-рассказывают, а ты и дальше всякую хрень лепишь ))

на, засекай:
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
type
TEngineVarTypes = (TInteger, TSingle, TDouble, TInt64, TPointer, TExtended);
_TSPHPValue = packed record
 case TEngineVarTypes of
  TInteger: (Integer : IntPtr);    // IntPtr ??
  TSingle:  (Single  : Single);
  TDouble:  (Double  : Double);
  TInt64:   (Int64   : Int64);
  TPointer: (Pointer : Pointer);
  TExtended:(Extended: Extended);
 end;
TSPHPValue = packed record
 _Data :_TSPHPValue;
 _Type :TEngineVarTypes;
end;
var
 i: Integer;
 V: TSPHPValue;
begin
 V._Type := TInt64;
 case V._Type of
  TInteger: ;
  TSingle: ;
  TDouble: ;
  TInt64:      for i := 0 to 1000050000 do Inc(V._Data.Int64);
  TPointer: ;
  TExtended: ;
 end;



Действительно, изменилось!!! Теперь он по времени занимает 6.048335 сек. Кхм.
...
Рейтинг: 0 / 0
int64 и перечисление в структуре
    #39466832
Bred eFeM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну и что тут изменилось от моего кода проверил ?

смещение Int64 относительно начала структуры изменилось.
...
Рейтинг: 0 / 0
int64 и перечисление в структуре
    #39466840
Няшик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Bred eFeMНу и что тут изменилось от моего кода проверил ?

смещение Int64 относительно начала структуры изменилось.

Только всё равно медленно на 3 секунды примерно
...
Рейтинг: 0 / 0
int64 и перечисление в структуре
    #39466853
SOFT FOR YOU
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
НяшикSOFT FOR YOUНяшик,

Советую менять case на вызов функции из массива
Под x86 кейсы работают ещё более менее, если идут по порядку, а под x64 там бинарный поиск. Лишние команды, переходы


А разве вызов функции не будет замедлять ? В принципе, вот такие результаты

3.185233 сек.
Код: pascal
1.
inc(t.TInt64, i);



А вот с case
3.519293 сек.
Код: pascal
1.
 t.SetValuePlus(i);



Разница вроде в 0.33406 незначительная из 1000000000 раз

Делай SetValuePlus инлайном и тестируй на x64
...
Рейтинг: 0 / 0
int64 и перечисление в структуре
    #39466857
Няшик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SOFT FOR YOUНяшикпропущено...



А разве вызов функции не будет замедлять ? В принципе, вот такие результаты

3.185233 сек.
Код: pascal
1.
inc(t.TInt64, i);



А вот с case
3.519293 сек.
Код: pascal
1.
 t.SetValuePlus(i);



Разница вроде в 0.33406 незначительная из 1000000000 раз

Делай SetValuePlus инлайном и тестируй на x64


По тестировать не могу, так как компилятора нету для 64, надо доустаналивать будет ... А так они и так инлайн

Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
121.
122.
123.
124.
125.
126.
127.
128.
129.
130.
131.
132.
133.
134.
135.
136.
137.
138.
139.
140.
141.
142.
143.
144.
145.
146.
147.
148.
149.
150.
151.
152.
153.
154.
155.
156.
157.
158.
159.
160.
161.
162.
163.
164.
165.
166.
167.
168.
169.
170.
171.
172.
173.
174.
175.
176.
177.
178.
179.
180.
181.
182.
183.
184.
185.
186.
187.
188.
189.
190.
191.
192.
193.
194.
195.
196.
197.
198.
199.
200.
201.
202.
203.
204.
205.
206.
207.
208.
209.
  TSPHPValue = packed record
  public
    TInt64: Int64;
    _Type: TEngineVarTypes;

    procedure StringAdd(const Value: string); inline;
    procedure StringSet(const Value: string); inline;

    // Вернёт длину и строку только для строки
    function StringLen(): integer; inline;
    function StringGet(): UnicodeString; inline;

    // Вернёт длину и строку для каждого типа
    function GetValueLen(): integer; inline;
    function GetValueString(): UnicodeString; inline;

    // Set
    procedure SetInteger(Value: IntPtr); inline;
    procedure SetInt64(Value: Int64); inline;
    procedure SetSingle(Value: Single); inline;
    procedure SetDouble(Value: Double); inline;
    procedure SetExtended(Value: Extended); inline;
    procedure SetCurrency(Value: Currency); inline;
    procedure SetPointer(Value: Pointer); inline;

    // Set + Plus
    procedure SetIntegerPlus(Value: IntPtr); inline;
    procedure SetInt64Plus(Value: Int64); inline;
    procedure SetSinglePlus(Value: Single); inline;
    procedure SetDoublePlus(Value: Double); inline;
    procedure SetExtendedPlus(Value: Extended); inline;
    procedure SetCurrencyPlus(Value: Currency); inline;
    procedure SetPointerPlus(Value: Pointer); inline;

    // Set + Minus
    procedure SetIntegerMinus(Value: IntPtr); inline;
    procedure SetInt64Minus(Value: Int64); inline;
    procedure SetSingleMinus(Value: Single); inline;
    procedure SetDoubleMinus(Value: Double); inline;
    procedure SetExtendedMinus(Value: Extended); inline;
    procedure SetCurrencyMinus(Value: Currency); inline;
    procedure SetPointerMinus(Value: Pointer); inline;

    // Set + DIV
    procedure SetIntegerDIV(Value: IntPtr); inline;
    procedure SetInt64DIV(Value: Int64); inline;
    procedure SetSingleDIV(Value: Single); inline;
    procedure SetDoubleDIV(Value: Double); inline;
    procedure SetExtendedDIV(Value: Extended); inline;
    procedure SetCurrencyDIV(Value: Currency); inline;
    procedure SetPointerDIV(Value: Pointer); inline;

    // Set + MUL
    procedure SetIntegerMUL(Value: IntPtr); inline;
    procedure SetInt64MUL(Value: Int64); inline;
    procedure SetSingleMUL(Value: Single); inline;
    procedure SetDoubleMUL(Value: Double); inline;
    procedure SetExtendedMUL(Value: Extended); inline;
    procedure SetCurrencyMUL(Value: Currency); inline;
    procedure SetPointerMUL(Value: Pointer); inline;

    // Set + MOD
    procedure SetIntegerMOD(Value: IntPtr); inline;
    procedure SetInt64MOD(Value: Int64); inline;
    procedure SetSingleMOD(Value: Single); inline;
    procedure SetDoubleMOD(Value: Double); inline;
    procedure SetExtendedMOD(Value: Extended); inline;
    procedure SetCurrencyMOD(Value: Currency); inline;
    procedure SetPointerMOD(Value: Pointer); inline;

    // Set + POW
    procedure SetIntegerPOW(Value: IntPtr); inline;
    procedure SetInt64POW(Value: Int64); inline;
    procedure SetSinglePOW(Value: Single); inline;
    procedure SetDoublePOW(Value: Double); inline;
    procedure SetExtendedPOW(Value: Extended); inline;
    procedure SetCurrencyPOW(Value: Currency); inline;
    procedure SetPointerPOW(Value: Pointer); inline;


    // SetValue

    procedure SetValue(const Value: string); overload; inline;

    procedure SetValue(Value: IntPtr); overload; inline;
    procedure SetValue(Value: Int64); overload; inline;
    procedure SetValue(Value: Single); overload; inline;
    procedure SetValue(Value: Double); overload; inline;
    procedure SetValue(Value: Extended); overload; inline;
    procedure SetValue(Value: Currency); overload; inline;
    procedure SetValue(Value: Pointer); overload; inline;

    // SetValue + Plus

    procedure SetValuePlus(Value: IntPtr); overload; inline;
    procedure SetValuePlus(Value: Int64); overload; inline;
    procedure SetValuePlus(Value: Single); overload; inline;
    procedure SetValuePlus(Value: Double); overload; inline;
    procedure SetValuePlus(Value: Extended); overload; inline;
    procedure SetValuePlus(Value: Currency); overload; inline;
    procedure SetValuePlus(Value: Pointer); overload; inline;

    // SetValue + Minus

    procedure SetValueMinus(Value: IntPtr); overload; inline;
    procedure SetValueMinus(Value: Int64); overload; inline;
    procedure SetValueMinus(Value: Single); overload; inline;
    procedure SetValueMinus(Value: Double); overload; inline;
    procedure SetValueMinus(Value: Extended); overload; inline;
    procedure SetValueMinus(Value: Currency); overload; inline;
    procedure SetValueMinus(Value: Pointer); overload; inline;

    // SetValue + DIV

    procedure SetValueDIV(Value: IntPtr); overload; inline;
    procedure SetValueDIV(Value: Int64); overload; inline;
    procedure SetValueDIV(Value: Single); overload; inline;
    procedure SetValueDIV(Value: Double); overload; inline;
    procedure SetValueDIV(Value: Extended); overload; inline;
    procedure SetValueDIV(Value: Currency); overload; inline;
    procedure SetValueDIV(Value: Pointer); overload; inline;

    // SetValue + MUL
    procedure SetValueMUL(Value: IntPtr); overload; inline;
    procedure SetValueMUL(Value: Int64); overload; inline;
    procedure SetValueMUL(Value: Single); overload; inline;
    procedure SetValueMUL(Value: Double); overload; inline;
    procedure SetValueMUL(Value: Extended); overload; inline;
    procedure SetValueMUL(Value: Currency); overload; inline;
    procedure SetValueMUL(Value: Pointer); overload; inline;

    // SetValue + MOD

    procedure SetValueMOD(Value: IntPtr); overload; inline;
    procedure SetValueMOD(Value: Int64); overload; inline;
    procedure SetValueMOD(Value: Single); overload; inline;
    procedure SetValueMOD(Value: Double); overload; inline;
    procedure SetValueMOD(Value: Extended); overload; inline;
    procedure SetValueMOD(Value: Currency); overload; inline;
    procedure SetValueMOD(Value: Pointer); overload; inline;

    // SetValue + POW

    procedure SetValuePOW(Value: IntPtr); overload; inline;
    procedure SetValuePOW(Value: Int64); overload; inline;
    procedure SetValuePOW(Value: Single); overload; inline;
    procedure SetValuePOW(Value: Double); overload; inline;
    procedure SetValuePOW(Value: Extended); overload; inline;
    procedure SetValuePOW(Value: Currency); overload; inline;
    procedure SetValuePOW(Value: Pointer); overload; inline;

    function GetByte: UInt8; inline;
    function GetWord: UInt16; inline;
    function GetInteger: IntPtr; inline;
    function GetInt64: Int64; inline;
    function GetShortInt: Int8; inline;
    function GetSmallInt: Int16; inline;

    function GetSingle: Single; inline;
    function GetDouble: Double; inline;
    function GetExtended: Extended; inline;
    function GetCurrency: Currency; inline;
    function GetPointer: Pointer; inline;

    function IsEqual(Value: IntPtr): Boolean; overload; inline;
    function IsEqual(Value: Int64): Boolean; overload; inline;
    function IsEqual(Value: Single): Boolean; overload; inline;
    function IsEqual(Value: Double): Boolean; overload; inline;
    function IsEqual(Value: Extended): Boolean; overload; inline;
    function IsEqual(Value: Currency): Boolean; overload; inline;
    function IsEqual(Value: Pointer): Boolean; overload; inline;

    function GetType: TEngineVarTypes; inline;

    function IsType(Typ: TEngineVarTypes): Boolean; inline;

    function IsNULL: Boolean; inline;
    function IsInteger: Boolean; inline;
    function IsInt64: Boolean; inline;
    function IsSingle: Boolean; inline;
    function IsDouble: Boolean; inline;
    function IsExtended: Boolean; inline;
    function IsCurrency: Boolean; inline;
    function IsPointer: Boolean; inline;

    function isset(): Boolean; inline;
    function empty(): Boolean; inline;




    // Таблица типов

    case TEngineVarTypes of
      SInt32:
        (TInteger: IntPtr);
      SSingle:
        (TSingle: Single);
      SDouble:
        (TDouble: Double);
      SExtended:
        (TExtended: Extended);
      SCurrency:
        (TCurrency: Currency);
      SPointer:
        (TPointer: Pointer);
      SString:
        (TBoxArray: PBoxArray);
  end;

...
Рейтинг: 0 / 0
int64 и перечисление в структуре
    #39466864
SOFT FOR YOU
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Няшик,

Тогда я удивлён, что профит вообще есть )
Обычно case-функции не инлайнят )

А вообще ты ещё можешь сделать функции far (или вне этой функции) и первым параметром функции сделать Self
...
Рейтинг: 0 / 0
int64 и перечисление в структуре
    #39466877
Няшик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SOFT FOR YOUОбычно case-функции не инлайнят )

Есть какие - то проблемы ? На 32 битном приложении, это незаметно (если есть)
...
Рейтинг: 0 / 0
int64 и перечисление в структуре
    #39466894
Няшик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SOFT FOR YOUОбычно case-функции не инлайнят )

По скорости инлайн и обычное вставка кода не влияют на производительность


Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
  for i := 0 to 1000000000 - 1 do
    begin
      with t do
      begin
        case _Type of
          SInt32: // Integer -2147483648..2147483647
            TInteger := TInteger + i;
          SInt64: // Int64 0..2^64-1
            TInt64 := TInt64 + i;
          SSingle: // Single 1.5e-45 .. 3.4e+38
            TSingle := TSingle + i;
          SDouble: // Double 5.0e-324 .. 1.7e+308
            TDouble := TDouble + i;
          SExtended: // Extended 3.4e-4932 .. 1.1e+4932 - 5.0e-324 .. 1.7e+308
            TExtended := TExtended + i;
          SCurrency: // Currency -922337203685477.5808.. 922337203685477.5807
            TCurrency := TCurrency + i;
          SPointer: // Pointer
            TPointer := Pointer(NativeInt(TPointer) + i);
          SNULL:
            SetInteger(i);
        end;
      end;
    end;




...........

Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
MyPHP.dpr.75: for i := 0 to 1000000000 - 1 do
005DF58A 33DB             xor ebx,ebx
MyPHP.dpr.79: case _Type of
005DF58C 0FB64608         movzx eax,[esi+$08]
005DF590 0FB6D0           movzx edx,al
005DF593 83FA07           cmp edx,$07
005DF596 0F8796000000     jnbe $005df632
005DF59C FF2495A3F55D00   jmp dword ptr [edx*4+$5df5a3]
005DF5A3 27               daa 
005DF5A4 F65D00           neg byte ptr [ebp+$00]
005DF5A7 C3               ret 
005DF5A8 F5               cmc 
005DF5A9 5D               pop ebp
005DF5AA 00C8             add al,cl
005DF5AC F5               cmc 
005DF5AD 5D               pop ebp
005DF5AE 00D7             add bh,dl
005DF5B0 F5               cmc 
005DF5B1 5D               pop ebp
005DF5B2 00E6             add dh,ah
005DF5B4 F5               cmc 
005DF5B5 5D               pop ebp
005DF5B6 00F5             add ch,dh
005DF5B8 F5               cmc 
005DF5B9 5D               pop ebp
005DF5BA 0006             add [esi],al
005DF5BC F65D00           neg byte ptr [ebp+$00]
005DF5BF 1DF65D0001       sbb eax,$01005df6
005DF5C4 5E               pop esi
005DF5C5 09EB             or ebx,ebp
005DF5C7 6A8B             push $8b
005DF5C9 C3               ret 
005DF5CA 99               cdq 
005DF5CB 0306             add eax,[esi]
005DF5CD 135604           adc edx,[esi+$04]
005DF5D0 8906             mov [esi],eax
005DF5D2 895604           mov [esi+$04],edx
005DF5D5 EB5B             jmp $005df632
MyPHP.dpr.85: TSingle := TSingle + i;
005DF5D7 895DC4           mov [ebp-$3c],ebx
005DF5DA DB45C4           fild dword ptr [ebp-$3c]
005DF5DD D84609           fadd dword ptr [esi+$09]
005DF5E0 D95E09           fstp dword ptr [esi+$09]
005DF5E3 9B               wait 
005DF5E4 EB4C             jmp $005df632
MyPHP.dpr.87: TDouble := TDouble + i;
005DF5E6 895DC4           mov [ebp-$3c],ebx
005DF5E9 DB45C4           fild dword ptr [ebp-$3c]
005DF5EC DC4609           fadd qword ptr [esi+$09]
005DF5EF DD5E09           fstp qword ptr [esi+$09]
005DF5F2 9B               wait 
005DF5F3 EB3D             jmp $005df632
MyPHP.dpr.89: TExtended := TExtended + i;
005DF5F5 895DC4           mov [ebp-$3c],ebx
005DF5F8 DB45C4           fild dword ptr [ebp-$3c]
005DF5FB DB6E09           fld tbyte ptr [esi+$09]
005DF5FE DEC1             faddp st(1)
005DF600 DB7E09           fstp tbyte ptr [esi+$09]
005DF603 9B               wait 
005DF604 EB2C             jmp $005df632
MyPHP.dpr.91: TCurrency := TCurrency + i;
005DF606 895DC4           mov [ebp-$3c],ebx
005DF609 DB45C4           fild dword ptr [ebp-$3c]
005DF60C D80D84F85D00     fmul dword ptr [$005df884]
005DF612 DF6E09           fild qword ptr [esi+$09]
005DF615 DEC1             faddp st(1)
005DF617 DF7E09           fistp qword ptr [esi+$09]
005DF61A 9B               wait 
005DF61B EB15             jmp $005df632
MyPHP.dpr.93: TPointer := Pointer(NativeInt(TPointer) + i);
005DF61D 8B4609           mov eax,[esi+$09]
005DF620 03C3             add eax,ebx
005DF622 894609           mov [esi+$09],eax
005DF625 EB0B             jmp $005df632
MyPHP.dpr.95: SetInteger(i);
005DF627 3C01             cmp al,$01
005DF629 7404             jz $005df62f
005DF62B C6460801         mov byte ptr [esi+$08],$01
005DF62F 895E09           mov [esi+$09],ebx
MyPHP.dpr.99: end;




Код: pascal
1.
2.
3.
4.
    for i := 0 to 1000000000 - 1 do
    begin
      t.SetValuePlus(i);
    end;




.......

Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
MyPHP.dpr.75: for i := 0 to 1000000000 - 1 do
005DF58A 33DB             xor ebx,ebx
MyPHP.dpr.77: t.SetValuePlus(i);
005DF58C 0FB64608         movzx eax,[esi+$08]
005DF590 0FB6D0           movzx edx,al
005DF593 83FA07           cmp edx,$07
005DF596 0F8796000000     jnbe $005df632
005DF59C FF2495A3F55D00   jmp dword ptr [edx*4+$5df5a3]
005DF5A3 27               daa 
005DF5A4 F65D00           neg byte ptr [ebp+$00]
005DF5A7 C3               ret 
005DF5A8 F5               cmc 
005DF5A9 5D               pop ebp
005DF5AA 00C8             add al,cl
005DF5AC F5               cmc 
005DF5AD 5D               pop ebp
005DF5AE 00D7             add bh,dl
005DF5B0 F5               cmc 
005DF5B1 5D               pop ebp
005DF5B2 00E6             add dh,ah
005DF5B4 F5               cmc 
005DF5B5 5D               pop ebp
005DF5B6 00F5             add ch,dh
005DF5B8 F5               cmc 
005DF5B9 5D               pop ebp
005DF5BA 0006             add [esi],al
005DF5BC F65D00           neg byte ptr [ebp+$00]
005DF5BF 1DF65D0001       sbb eax,$01005df6
005DF5C4 5E               pop esi
005DF5C5 09EB             or ebx,ebp
005DF5C7 6A8B             push $8b
005DF5C9 C3               ret 
005DF5CA 99               cdq 
005DF5CB 0306             add eax,[esi]
005DF5CD 135604           adc edx,[esi+$04]
005DF5D0 8906             mov [esi],eax
005DF5D2 895604           mov [esi+$04],edx
005DF5D5 EB5B             jmp $005df632
005DF5D7 895DC4           mov [ebp-$3c],ebx
005DF5DA DB45C4           fild dword ptr [ebp-$3c]
005DF5DD D84609           fadd dword ptr [esi+$09]
005DF5E0 D95E09           fstp dword ptr [esi+$09]
005DF5E3 9B               wait 
005DF5E4 EB4C             jmp $005df632
005DF5E6 895DC4           mov [ebp-$3c],ebx
005DF5E9 DB45C4           fild dword ptr [ebp-$3c]
005DF5EC DC4609           fadd qword ptr [esi+$09]
005DF5EF DD5E09           fstp qword ptr [esi+$09]
005DF5F2 9B               wait 
005DF5F3 EB3D             jmp $005df632
005DF5F5 895DC4           mov [ebp-$3c],ebx
005DF5F8 DB45C4           fild dword ptr [ebp-$3c]
005DF5FB DB6E09           fld tbyte ptr [esi+$09]
005DF5FE DEC1             faddp st(1)
005DF600 DB7E09           fstp tbyte ptr [esi+$09]
005DF603 9B               wait 
005DF604 EB2C             jmp $005df632
005DF606 895DC4           mov [ebp-$3c],ebx
005DF609 DB45C4           fild dword ptr [ebp-$3c]
005DF60C D80D84F85D00     fmul dword ptr [$005df884]
005DF612 DF6E09           fild qword ptr [esi+$09]
005DF615 DEC1             faddp st(1)
005DF617 DF7E09           fistp qword ptr [esi+$09]
005DF61A 9B               wait 
005DF61B EB15             jmp $005df632
005DF61D 8BC3             mov eax,ebx
005DF61F 034609           add eax,[esi+$09]
005DF622 894609           mov [esi+$09],eax
005DF625 EB0B             jmp $005df632
005DF627 3C01             cmp al,$01
005DF629 7404             jz $005df62f
005DF62B C6460801         mov byte ptr [esi+$08],$01
005DF62F 895E09           mov [esi+$09],ebx
MyPHP.dpr.78: end;





Код вообще ничем не отличается
...
Рейтинг: 0 / 0
int64 и перечисление в структуре
    #39466909
Bred eFeM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
НяшикТолько всё равно медленно на 3 секунды примерно
Код: plaintext
T7250 6,5s  E5420 2,8s

только тебе эти секунды не надо, тебе нужно понимание того, как компилятор расскажет процессору что делать с твоим кодом.
а ты даже асм листинг толком посмотреть не можешь и на матчасть забиваешь ....
...
Рейтинг: 0 / 0
int64 и перечисление в структуре
    #39466912
SOFT FOR YOU
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Няшик,

Не инлайнят потому, что они жрут много executable памяти и занимают кучу регистров, которые нужны для оптимизации вне. У тебя тест простой, может и нет разницы, а на реальных тестах может сыграть роль
...
Рейтинг: 0 / 0
int64 и перечисление в структуре
    #39466948
Няшик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Bred eFeMНяшикТолько всё равно медленно на 3 секунды примерно
Код: plaintext
T7250 6,5s  E5420 2,8s

только тебе эти секунды не надо, тебе нужно понимание того, как компилятор расскажет процессору что делать с твоим кодом.
а ты даже асм листинг толком посмотреть не можешь и на матчасть забиваешь ....


К слову, если отрубить браузер, то при
Код: pascal
1.
2.
3.
4.
  TSPHPValue = packed record
  public
    TInt64: Int64;
    _Type: TEngineVarTypes;



Он как раз выдаёт 2.871028 сек. О чём лишний раз говорит, что я всё правильно делаю (можно забить на 19 байт, это не 24 и не 30 с лишним)

Только ваш северный процессор стоит $347.00 а мой детскопный $47.00


Сравнение ваших и моего процессора E3300
...
Рейтинг: 0 / 0
int64 и перечисление в структуре
    #39466951
Няшик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SOFT FOR YOUНяшик,

Не инлайнят потому, что они жрут много executable памяти и занимают кучу регистров, которые нужны для оптимизации вне. У тебя тест простой, может и нет разницы, а на реальных тестах может сыграть роль

Пока не наблюдал проблем, я уже в VM машину включил их для переменных, которые активно участвуют в вызовах функций, констант и так далее

Возможно такой проблемы нету, из за того что я использую прямую адресацию к своей структуре. И компилятору не составляет труда вставить его неизменным
...
Рейтинг: 0 / 0
int64 и перечисление в структуре
    #39466978
SOFT FOR YOU
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Няшик,

Мне кажется, ты уже долго мучаешься с ним
Давай ускоряйся
И помни, что важна не скорость компиляции, а скорость исполнения. Или в PHP это одно и то же? )
...
Рейтинг: 0 / 0
int64 и перечисление в структуре
    #39467018
Няшик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SOFT FOR YOUНяшик,

Мне кажется, ты уже долго мучаешься с ним
Давай ускоряйся
И помни, что важна не скорость компиляции, а скорость исполнения. Или в PHP это одно и то же? )


Ну как бы, я параллельно задаю вопросы и реализовываю по плану желаемое (И потом, если что - то узнаю полезное, изменяю.)

Насчёт скорости компиляции речь не шла. Я старался сделать контейнер компактнее, и максимально быстро (Но жертвовать приходиться всегда)
...
Рейтинг: 0 / 0
int64 и перечисление в структуре
    #39467084
Bred eFeM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
если отрубить браузервот-вот, ос и другие проги отбирают кеш.
всё правильно делаю
объясни, что тут и как, и будет всё++
Код: pascal
1.
2.
3.
new(TBoxArray);
SetLength(TBoxArray^, SizeOf(Value));
CopyArray(@TBoxArray^[0], @Value, System.TypeInfo(string), 1); 
...
Рейтинг: 0 / 0
int64 и перечисление в структуре
    #39467175
Няшик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Bred eFeMобъясни, что тут и как, и будет всё++
Код: pascal
1.
2.
3.
new(TBoxArray);
SetLength(TBoxArray^, SizeOf(Value));
CopyArray(@TBoxArray^[0], @Value, System.TypeInfo(string), 1); 



Надо объявить память под переменную, в переменной выделить память 4 байта под структуру StrRec

Данная структура хранит информацию о длине строки, счётчик ссылок, и информацию о кодировки с прочей лабудой.


Дальше, мы копируем байты основной строки в наш бокс, который может держать в себе PAnsiChar и PWideChar с string который в итоге будет UnicodeString

Перезапись, в функции CopyArray а именно _LStrAsg -> _LStrClr вызовет FreeMem и не будет утечек.

Длину строки можно получить так (в быстрой формулировки)

Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
function TSPHPValue.StringLen(): integer;
var
  S: PUnicodeString;
begin
  if _Type = SString then
  begin
    if TBoxArray <> nil then
    begin
      S := PUnicodeString(@TBoxArray^[0]);
      if S^ <> '' then
        Exit(PInteger(PByte(S^) - 4)^);
    end;
  end;
  Exit(0);
end;

...
Рейтинг: 0 / 0
int64 и перечисление в структуре
    #39467234
Фотография defecator
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
НяшикSOFT FOR YOUНяшик,

Мне кажется, ты уже долго мучаешься с ним
Давай ускоряйся
И помни, что важна не скорость компиляции, а скорость исполнения. Или в PHP это одно и то же? )


Ну как бы, я параллельно задаю вопросы и реализовываю по плану желаемое (И потом, если что - то узнаю полезное, изменяю.)

Насчёт скорости компиляции речь не шла. Я старался сделать контейнер компактнее, и максимально быстро (Но жертвовать приходиться всегда)

ты сначала сделай, чтобы всё работало, весь функционал твоего интерпретатора PHP работал от начала и до конца и был покрыт тестами, а потом будешь гнаться за скоростью.
...
Рейтинг: 0 / 0
int64 и перечисление в структуре
    #39467238
Bred eFeM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
память 4 байта под структуру StrRec Данная структура хранит информацию о длине строки, счётчик ссылок, и информацию о кодировки с прочей лабудой. и всё в 4 байта ?
копируем байты основной строки в наш боксв бокс, так там StrRec, не?
...
Рейтинг: 0 / 0
int64 и перечисление в структуре
    #39467247
Няшик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
defecatorНяшикпропущено...



Ну как бы, я параллельно задаю вопросы и реализовываю по плану желаемое (И потом, если что - то узнаю полезное, изменяю.)

Насчёт скорости компиляции речь не шла. Я старался сделать контейнер компактнее, и максимально быстро (Но жертвовать приходиться всегда)

ты сначала сделай, чтобы всё работало, весь функционал твоего интерпретатора PHP работал от начала и до конца и был покрыт тестами, а потом будешь гнаться за скоростью.

Ну вот zend переписывали, и что это дало??? Да, безусловно есть оптимизация с предыдущими тестами. Но не на много. А теперь они оптимизируют ядро на вызовах (вырезая их)


Bred eFeMпамять 4 байта под структуру StrRec Данная структура хранит информацию о длине строки, счётчик ссылок, и информацию о кодировки с прочей лабудой. и всё в 4 байта ?
копируем байты основной строки в наш боксв бокс, так там StrRec, не?

Выделить надо 4 байта, для того что бы записать туда. Это не я придумал, это даже в TValue реализовано (От туда и подчеркнул для себя).

Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
function _NewUnicodeString(CharLength: Integer): Pointer;
var
  P: PStrRec;
begin
  Result := nil;
  if CharLength > 0 then
  begin
    // Allocate a memory with record and extra wide-null terminator.
    if CharLength >= (MaxInt - SizeOf(StrRec)) div SizeOf(WideChar) then _IntOver;
    GetMem(P, SizeOf(StrRec) + (CharLength + 1) * SizeOf(WideChar));
    Result := Pointer(PByte(P) + SizeOf(StrRec));
    P.length := CharLength;
    P.refCnt := 1;
    P.elemSize := SizeOf(WideChar);
    P.codePage := Word(DefaultUnicodeCodePage);
    PWideChar(Result)[CharLength] := #0;
  end;
end;
...
Рейтинг: 0 / 0
int64 и перечисление в структуре
    #39467271
Bred eFeM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
это даже в TValue реализованону, и где там слово '4' ?
...
Рейтинг: 0 / 0
int64 и перечисление в структуре
    #39467274
Фотография defecator
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Няшикdefecatorпропущено...


ты сначала сделай, чтобы всё работало, весь функционал твоего интерпретатора PHP работал от начала и до конца и был покрыт тестами, а потом будешь гнаться за скоростью.

Ну вот zend переписывали, и что это дало??? Да, безусловно есть оптимизация с предыдущими тестами. Но не на много. А теперь они оптимизируют ядро на вызовах (вырезая их)

пытаясь сразу сделать супер-пупер-быстро, вместо безошибочной реализации всего функционала,
ты углубляешься в детали, которые на данном этапе малосущественны.
Будешь как SOFT FOR YOU - море говнокода, понты "у меня самый быстрый в мире код", а на выходе - пшик.
...
Рейтинг: 0 / 0
int64 и перечисление в структуре
    #39467277
Няшик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Bred eFeM это даже в TValue реализованону, и где там слово '4' ?


4 это Pointer, моя ошибка что не уточнил.. Извиняюсь !

Вот приме того что будет.





defecatorНяшикпропущено...


Ну вот zend переписывали, и что это дало??? Да, безусловно есть оптимизация с предыдущими тестами. Но не на много. А теперь они оптимизируют ядро на вызовах (вырезая их)

пытаясь сразу сделать супер-пупер-быстро, вместо безошибочной реализации всего функционала,
ты углубляешься в детали, которые на данном этапе малосущественны.
Будешь как SOFT FOR YOU - море говнокода, понты "у меня самый быстрый в мире код", а на выходе - пшик.

Функционал библиотечных функций я хочу реализовывать на самом SPHP, а потом возможно конвертировать в Delphi код и компилировать (Это позволить качественно дебажить код из самого SPHP и при желании собирать в бинарник полностью, без VM)
...
Рейтинг: 0 / 0
int64 и перечисление в структуре
    #39467286
SOFT FOR YOU
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
defecator,

Сам ты говнокод )
...
Рейтинг: 0 / 0
int64 и перечисление в структуре
    #39467289
Bred eFeM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
4 это Pointerхорошо, значит у тебя TBoxArray это Pointer, который указывает на ?
...
Рейтинг: 0 / 0
int64 и перечисление в структуре
    #39467295
Няшик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Bred eFeM4 это Pointerхорошо, значит у тебя TBoxArray это Pointer, который указывает на ?

В общем вот, что получается.. Я как то на словах плохо объясняю, мне это не дано от слова совсем...
...
Рейтинг: 0 / 0
int64 и перечисление в структуре
    #39469861
Няшик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вы наверно будете смеяться,но это надо точно занести в топик как я ложанулся...

Код: pascal
1.
2.
3.
4.
  TSPHPBox<T> = packed record
    value: T;
    _type: TEngineVarTypes;
  end;



Я думал что на структуры это не распространяется
...
Рейтинг: 0 / 0
int64 и перечисление в структуре
    #39469863
Bred eFeM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Няшик, будем:

- а зачем там packed - наверное можно убрать
- и для чего _type, если есть <T> - тоже убрать
- а зачем то, что осталось - хз
...
Рейтинг: 0 / 0
int64 и перечисление в структуре
    #39469865
Няшик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Bred eFeMНяшик, будем:

- а зачем там packed - наверное можно убрать
- и для чего _type, если есть <T> - тоже убрать
- а зачем то, что осталось - хз

_type нужен для описания таких типов из PHP как resource, iterables, object, callable (Собственно их описания не уместишь <T>)

А packed остался просто так (Вполне возможно не нужен. Но пока не буду убирать.)
...
Рейтинг: 0 / 0
70 сообщений из 70, показаны все 3 страниц
Форумы / Delphi [игнор отключен] [закрыт для гостей] / int64 и перечисление в структуре
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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