Найден 41 результат

Azazaz
11.12.2017 15:13:30
Форум: Free Pascal Compiler
Тема: Типы данных
Ответы: 133
Просмотры: 175124

Re: Типы данных

runewalsh, попробуй разместить экземпляр класса на стеке функции/процедуры.
Azazaz
10.12.2017 19:03:42
Форум: Free Pascal Compiler
Тема: Типы данных
Ответы: 133
Просмотры: 175124

Re: Типы данных

На заметку хацкерам:
object позволяет определить собственную (эффективную) модель управления памятью, например миллион объектов можно выделить 1-ой аллокацией как непрерывный блок памяти, в случае с class понадобится соответственно 1КК вызовов конструктора + 1КК аллокаций и все это будет иметь ...
Azazaz
17.05.2017 19:56:07
Форум: Общее
Тема: Общение с программой на CИ
Ответы: 10
Просмотры: 30248

Re: Общение с программой на CИ

Вычленить из аналов C структуру данных из под map, написать С функцию которая возвращает указатель на эти данные. передать в паскаль функцию указатель. Но подобные метод может быть совершенно не эффективен ввиду того что C++ генерирует в реализации методов всякую дрянь ака инкапсуляция, что крайне ...
Azazaz
13.04.2017 12:18:29
Форум: Сторонние средства
Тема: Модуль для работы с bzip2 через потоки
Ответы: 16
Просмотры: 33874

Re: Модуль для работы с bzip2 через потоки

Снег Север 7zip есть модуль/класс для нативной работы?
Azazaz
02.04.2017 13:05:56
Форум: Free Pascal Compiler
Тема: Уничтожение значений-объектов массива TMap из FCL-STL
Ответы: 69
Просмотры: 76123

Re: Уничтожение значений-объектов массива TMap из FCL-STL

Уличная магия:

Код: Выделить всё

type
 TKey = (One, Two, Three);
 TEl = array[TKey]of String;
var
 A: TEl;
begin
 A[One]:= '123';
 A[Two]:= 'Stepan';
 Writeln(A[One], LineEnding, A[Two]);
 readln;
end.
Azazaz
17.03.2017 16:37:16
Форум: Free Pascal Compiler
Тема: fpc-3.0.0 - запилили баг в арифметику
Ответы: 161
Просмотры: 179339

Re: fpc-3.0.0 - запилили баг в арифметику

Астанавитесь!

const
s: single = 0.1;
d: double = 0.1;
begin
Writeln(s = d);
end.

А разгадка проста: компилятор производит операции с плавающей точкой в Extended и результат обрезает что б впихнуть в целевой тип, по этому бинарное представление разнокалиберных real типов ...
Azazaz
16.03.2017 16:53:57
Форум: Free Pascal Compiler
Тема: fpc-3.0.0 - запилили баг в арифметику
Ответы: 161
Просмотры: 179339

Re: fpc-3.0.0 - запилили баг в арифметику

Числа с плавающей точкой - игрушка дьявола, ежжи.
Количество значащих цифр для real типов ограничено, за пределами этого ограничения находится мусор. Для double это – 15 цифр приблизительно, дальше уже идет что угодно, как эта четверка например. В бытовых ситуациях 15 цифр – хватает с головой. Для ...
Azazaz
14.03.2017 00:32:04
Форум: Free Pascal Compiler
Тема: Адрес инструкции
Ответы: 33
Просмотры: 37671

Re: Адрес инструкции

Из темы от скалогрыз :
http://forum.lazarus.freepascal.org/index.php/topic,34614.msg227667.html#msg227667
Таблица с результатом тестов:

inline macro asm: Time: 10334 Sum: 46130000
inline GotoAddr call: Time: 8901 Sum: 46130000
case: Time: 11211 Sum: 46130000
case ...
Azazaz
14.03.2017 00:10:12
Форум: Free Pascal Compiler
Тема: Адрес инструкции
Ответы: 33
Просмотры: 37671

Re: Адрес инструкции

Я сломал его полностью:

{$mode objfpc}{$H+}
{$inline on}
{$ASMMODE intel}
{$GoTo ON}

procedure Proc;
label l1,l2;
var k: byte;
type
TOffs = array[0..1]of pointer;
const
O: TOffs = (@l1, @l2);
begin
k:= 0;
asm
add [O], 4;
jmp O;
end;
l1: inc(k, 2 ...
Azazaz
13.03.2017 23:56:40
Форум: Free Pascal Compiler
Тема: Адрес инструкции
Ответы: 33
Просмотры: 37671

Re: Адрес инструкции

Еееее, сломал:

{$mode objfpc}{$H+}
{$inline on}
{$ASMMODE intel}
{$GoTo ON}

procedure Proc;
label l1,l2;
var k: byte;
const
p1: pointer = @l1;
p2: pointer = @l2;
begin
Writeln(DWord(p1), ' ', DWord(p2)); readln;
k:= 0;
asm
jmp dword p2;
end;
l1: inc(k, 2);
l2&#58 ...
Azazaz
13.03.2017 20:22:18
Форум: Free Pascal Compiler
Тема: Адрес инструкции
Ответы: 33
Просмотры: 37671

Re: Адрес инструкции

runewalsh Именно, пока доползет до последнего case можно кофе сварить. То ли дело добыть элемент массива и сделать один прыжек.
Так вот, я попытался заполнить массив смещений:

{$mode objfpc}{$H+}
{$inline on}
{$GoTo ON}

type
TOffs = LongWord;
{Jump, P1, P2, End}

var
O: TOffs;
label
Beg ...
Azazaz
13.03.2017 19:36:29
Форум: Free Pascal Compiler
Тема: Адрес инструкции
Ответы: 33
Просмотры: 37671

Re: Адрес инструкции

Ассемблерный код который я выложил сгенерирован под 4 уровнем оптимизации. Компилятор не читает мысли.
Azazaz
13.03.2017 19:06:58
Форум: Free Pascal Compiler
Тема: Адрес инструкции
Ответы: 33
Просмотры: 37671

Re: Адрес инструкции

Исходная задача

procedure P1(k: byte);
label L1,L2,L3;
procedure S1;inline;
begin ... end;
procedure S2;inline;
begin ... end;
procedure S3;inline;
begin ... end;
begin
case k of
1: GoTo L1; 2: GoTo L2; 3: GoTo L3;
end;
L1: S1;
L2 ...