Найден 41 результат
- 28.01.2018 20:38:41
- Форум: Free Pascal Compiler
- Тема: Ещё один нежданчик с автоматической перекодировкой
- Ответы: 4
- Просмотры: 5941
Re: Ещё один нежданчик с автоматической перекодировкой
{$H+} делает все String AnsiString.
- 11.12.2017 15:13:30
- Форум: Free Pascal Compiler
- Тема: Типы данных
- Ответы: 133
- Просмотры: 175124
Re: Типы данных
runewalsh, попробуй разместить экземпляр класса на стеке функции/процедуры.
- 10.12.2017 19:03:42
- Форум: Free Pascal Compiler
- Тема: Типы данных
- Ответы: 133
- Просмотры: 175124
Re: Типы данных
На заметку хацкерам:
object позволяет определить собственную (эффективную) модель управления памятью, например миллион объектов можно выделить 1-ой аллокацией как непрерывный блок памяти, в случае с class понадобится соответственно 1КК вызовов конструктора + 1КК аллокаций и все это будет иметь ...
object позволяет определить собственную (эффективную) модель управления памятью, например миллион объектов можно выделить 1-ой аллокацией как непрерывный блок памяти, в случае с class понадобится соответственно 1КК вызовов конструктора + 1КК аллокаций и все это будет иметь ...
- 17.05.2017 19:56:07
- Форум: Общее
- Тема: Общение с программой на CИ
- Ответы: 10
- Просмотры: 30248
Re: Общение с программой на CИ
Вычленить из аналов C структуру данных из под map, написать С функцию которая возвращает указатель на эти данные. передать в паскаль функцию указатель. Но подобные метод может быть совершенно не эффективен ввиду того что C++ генерирует в реализации методов всякую дрянь ака инкапсуляция, что крайне ...
- 14.04.2017 14:47:15
- Форум: Free Pascal Compiler
- Тема: Использовать процедурный тип при объявлении процедуры\функци
- Ответы: 89
- Просмотры: 111658
Re: Использовать процедурный тип при объявлении процедуры\фу
Код: Выделить всё
type
TFu = function{$I i2.inc}
function pA{$I i2.inc}
begin
Result:= Byte(A+B);
end;i2.inc
Код: Выделить всё
(A,B: DWord): Byte;- 13.04.2017 12:18:29
- Форум: Сторонние средства
- Тема: Модуль для работы с bzip2 через потоки
- Ответы: 16
- Просмотры: 33874
Re: Модуль для работы с bzip2 через потоки
Снег Север 7zip есть модуль/класс для нативной работы?
- 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.- 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 типов ...
const
s: single = 0.1;
d: double = 0.1;
begin
Writeln(s = d);
end.
А разгадка проста: компилятор производит операции с плавающей точкой в Extended и результат обрезает что б впихнуть в целевой тип, по этому бинарное представление разнокалиберных real типов ...
- 16.03.2017 16:53:57
- Форум: Free Pascal Compiler
- Тема: fpc-3.0.0 - запилили баг в арифметику
- Ответы: 161
- Просмотры: 179339
Re: fpc-3.0.0 - запилили баг в арифметику
Числа с плавающей точкой - игрушка дьявола, ежжи.
Количество значащих цифр для real типов ограничено, за пределами этого ограничения находится мусор. Для double это – 15 цифр приблизительно, дальше уже идет что угодно, как эта четверка например. В бытовых ситуациях 15 цифр – хватает с головой. Для ...
Количество значащих цифр для real типов ограничено, за пределами этого ограничения находится мусор. Для double это – 15 цифр приблизительно, дальше уже идет что угодно, как эта четверка например. В бытовых ситуациях 15 цифр – хватает с головой. Для ...
- 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 ...
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 ...
- 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 ...
{$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 ...
- 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: ...
{$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: ...
- 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 ...
Так вот, я попытался заполнить массив смещений:
{$mode objfpc}{$H+}
{$inline on}
{$GoTo ON}
type
TOffs = LongWord;
{Jump, P1, P2, End}
var
O: TOffs;
label
Beg ...
- 13.03.2017 19:36:29
- Форум: Free Pascal Compiler
- Тема: Адрес инструкции
- Ответы: 33
- Просмотры: 37671
Re: Адрес инструкции
Ассемблерный код который я выложил сгенерирован под 4 уровнем оптимизации. Компилятор не читает мысли.
- 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 ...
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 ...
