SemiOFF: Догнать и перегнать Delphi

Любые обсуждения, не нарушающие правил форума.

Модератор: Модераторы

Re: SemiOFF: Догнать и перегнать Delphi

Сообщение Climber » 04.12.2009 12:41:30

FedeX писал(а):
И тем не менее. Размер кода - ладно, меня 3,5 МБ клиент БД (из которых 2 идут от zeos'a) вполне устраивает (в Delphi было бы 2 МБ). А вот скорость компиляции? Где она настраивается? Сколько я не тыкал в разные галочки в настройках, ощутимой невооруженным глазом "прибавки к пенсии" так и не заметил.

... И потом, вам уже пять раз сказали - если что-то не нравится, возьми и сделай как считаешь нужным.

Хаха - по вашей логике вот вы сами себе и ответили :D "возьми и сделай как считаешь нужным."

Ни фига подобного! Утверждалось, что этот функционал (ускорение компиляции) уже реализован, а я только спросил, как до него добраться. Если нет - то и фиг с ним, 10 - 15 с на компиляцию меня пока не смущают. Вот будет мой проект по 5-6 минут компилироваться - тогда да, займусь. А размер exe меня устраивает.

rellai2 писал(а):Скалоглыз же начал тролить и писать ничем не подкрепленные посты, из-за чего я и погорячился.

Скалогрыз начал троллить (да еще и первым наверное?), а вы всего лишь немного погорячились? Хорошо, так и запишем. :wink:
Climber
постоялец
 
Сообщения: 415
Зарегистрирован: 03.06.2007 20:09:57
Откуда: Москва

Re: SemiOFF: Догнать и перегнать Delphi

Сообщение rellai2 » 04.12.2009 13:20:09

Хорошо, так и запишем.

Записывайте, я считаю фразы типа "Вы признались в том что хотите закрыть иходники" или как там точно(лень искать) толстым троллингом и офтопом
rellai2
постоялец
 
Сообщения: 135
Зарегистрирован: 18.09.2008 11:37:45

Re: SemiOFF: Догнать и перегнать Delphi

Сообщение v-t-l » 04.12.2009 15:12:08

Max Rusov писал(а):Особенно улыбнула мысль, что дельфи компилирует по мере набора программного кода и поэтому работает так быстро.

Ну здесь я слегка погорячился :) . Но насчет интеграции CodeTools и компилятора, меня к этому подтолкнуло следующее: если ввести в редакторе кода какой-нибудь бред и навести на него мышь для получения подсказки, то Delphi ругнется
Код: Выделить всё
[Pascal Error] Unit1.pas(1): Unable to invoke Code Completion due to errors in source code
. Врядли синтаксический разбор производится по несколько раз - для CodeTools, для компиляции, а потом и отладки. А то, что отладочная информация собирается налету - при первой же попытке запуска проекта из IDE, даже если проект уже был скомпилен и никакие из исходников не менялись, Delphi все равно соберет его заново, а уже потом позволит отладку.

Добавлено спустя 17 минут 28 секунд:
хотя нет, похоже отладочная информация все же пишется в бинарник.
v-t-l
энтузиаст
 
Сообщения: 734
Зарегистрирован: 13.05.2007 16:27:22
Откуда: Belarus

Re: SemiOFF: Догнать и перегнать Delphi

Сообщение Max Rusov » 04.12.2009 15:37:38

v-t-l писал(а): Врядли синтаксический разбор производится по несколько раз - для CodeTools, для компиляции, а потом и отладки.

Естественно, при компиляции все парcится заново. Другой вопрос, что _возможно_ "CodeTools" использует тот-же парсер, что и компилятор, но это мы знать не можем - исходников то нет.
v-t-l писал(а):А то, что отладочная информация собирается налету - при первой же попытке запуска проекта из IDE, даже если проект уже был скомпилен и никакие из исходников не менялись, Delphi все равно соберет его заново, а уже потом позволит отладку.

Delphi сохраняет отладочную информацию в DCU файлах. А при запуске делает Make - т.е. проверяет не требуется ли что-нибудь перекомпилировать.
Max Rusov
постоялец
 
Сообщения: 191
Зарегистрирован: 25.04.2009 15:46:03

Re: SemiOFF: Догнать и перегнать Delphi

Сообщение v-t-l » 04.12.2009 15:51:07

Max Rusov
Спасибо за разъяснения.

P.S. А все же идея об интеграции компилятора, CodeTools и отладчика в IDE не кажется мне такой уж ужасной. Особенно, когда FPC научится создавать и использовать Runtime Packages.
v-t-l
энтузиаст
 
Сообщения: 734
Зарегистрирован: 13.05.2007 16:27:22
Откуда: Belarus

Re: SemiOFF: Догнать и перегнать Delphi

Сообщение Max Rusov » 04.12.2009 16:05:15

А мне это кажется неудачным. Если под IDE вы подразумеваете Lazarus - то я, например, им не пользуюсь. А FPC и отладчиком пользуюсь. Не вижу никаких причин почему все не может работать хорошо, будучи построено из независимых компонент. От того что вы просто встроите компилятор в IDE - от этого он ни быстрее ни качественнее компилировать не станет.
Max Rusov
постоялец
 
Сообщения: 191
Зарегистрирован: 25.04.2009 15:46:03

Re: SemiOFF: Догнать и перегнать Delphi

Сообщение v-t-l » 04.12.2009 16:32:32

А если поселить основные части компилятора, CodeTools и отладчика во внешних библиотеках и подключать их к любым IDE или утилитам командной строки? Тогда, я думаю, взаимодействие между ними можно организовать значительно лучше, чем через стандартные потоки ввода вывода.
Max Rusov писал(а):От того что вы просто встроите компилятор в IDE - от этого он ни быстрее ни качественнее компилировать не станет.

Я имел в виду, не просто встроить компилятор в IDE, а организовать между ними лучшее взаимодействие.
v-t-l
энтузиаст
 
Сообщения: 734
Зарегистрирован: 13.05.2007 16:27:22
Откуда: Belarus

Re: SemiOFF: Догнать и перегнать Delphi

Сообщение Odyssey » 04.12.2009 23:22:23

Max Rusov писал(а):но вот качество кодогенерации - на очень низком уровне. Это даже по сравнению с Delphi - а ведь Delphi считается очень примитивным компилятором. Так что мое мнение:

- В первую очередь надо поднимать качество кодогенерации, без этого FPC не может рассматриваться как серьезное средство системного программирования.

Раз уж тема всё равно переросла в оффтоп, спрошу прямо здесь -- а в чём выражается плохое качество кодогенерации? Я исходники FPC не читал и скомпилированный им код не изучал, и после такого заявления стало как-то некомфортно :) Можно вкратце о последствиях, или линк где можно об этом почитать (кроме исходников)?
Odyssey
энтузиаст
 
Сообщения: 580
Зарегистрирован: 29.11.2007 17:32:24

Re: SemiOFF: Догнать и перегнать Delphi

Сообщение debi12345 » 05.12.2009 00:10:27

плохое качество кодогенерации?

Это - миф.
Бинарный код - нормальный.
Кстати, одна только Pascal-0nly WITH-фишка дает нехилую оптимизацию.
Аватара пользователя
debi12345
долгожитель
 
Сообщения: 5759
Зарегистрирован: 10.05.2006 23:41:15
Откуда: Ташкент (Узбекистан)

Re: SemiOFF: Догнать и перегнать Delphi

Сообщение Max Rusov » 05.12.2009 02:16:49

Я наверное, не совсем правильно выразился. Говорить о качестве кодогенерации можно только применительно к конкретной платформе, а оно существенно разное, для разных платформ. Меня лично FPC интересует в первую очередь как компилятор под Win64, соответственно все мои наблюдения касаются именно ее. Для Win32/Linux говорить не буду - не смотрел. Под Win64, к сожалению, пока генерируется очень неоптимальный код. Особенно при работе со строками, интерфейсами и обработке исключений.
Max Rusov
постоялец
 
Сообщения: 191
Зарегистрирован: 25.04.2009 15:46:03

Re: SemiOFF: Догнать и перегнать Delphi

Сообщение debi12345 » 05.12.2009 08:22:52

Особенно при работе со строками, интерфейсами и обработке исключений.

С чем сравнивать ? Тот же "Си" вообще никак (точнее - через хаки) не работает ни со строками (подсчет ссылок, возврат строк из функций, WideString,...), ни с исключениями. А у FPC здесь и менеджер памяти/строк, и... По идее, вопросы к качеству кода могут быть типа - НЕоптимизация вложенных циклов и условий, НЕиспользование MMX/SSE там, где это можно,..
Аватара пользователя
debi12345
долгожитель
 
Сообщения: 5759
Зарегистрирован: 10.05.2006 23:41:15
Откуда: Ташкент (Узбекистан)

Re: SemiOFF: Догнать и перегнать Delphi

Сообщение Sergei I. Gorelkin » 05.12.2009 09:05:56

Сравнивать с Си бессмысленно, но с Дельфи - вполне можно. FPC действительно пихает временные переменные буквально на каждый чих, самый вопиющий пример - http://bugs.freepascal.org/view.php?id=14092, *любой* вызов метода интерфейса превращается в 5 (пять). То же самое с Variant, при любом присвоении он будет скопирован минимум дважды. Прежде чем читать ассемберные листинги, желательно запастись ящиком валерьянки, короче говоря.
Аватара пользователя
Sergei I. Gorelkin
энтузиаст
 
Сообщения: 1405
Зарегистрирован: 24.07.2005 14:40:41
Откуда: Зеленоград

Re: SemiOFF: Догнать и перегнать Delphi

Сообщение debi12345 » 05.12.2009 09:50:30

На этот раз решил проверить сам.

Компиляция "fpc -a -XX -CX -O3 -Xs test1.pas":

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

{$mode objfpc}{h+}
{$interfaces corba}

uses
unit1;

var
cl1: class1;
cl2: class2;

begin

cl1:= class1.create;
writeln(ifunc1(cl1,2));

cl2:= class2.create;
writeln(ifunc1(cl2,2));

end.

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

{$mode objfpc}{h+}
{$interfaces corba}

interface

type

int1 = interface
function f1(const arg1:integer): boolean;
end;

class1 = class(int1)
function f1(const arg1:integer): boolean; virtual;   
end;


class2 = class(int1)
function f1(const arg1:integer): boolean; virtual;    
end;


function ifunc1(const arg1: int1; const val:integer): boolean;

implementation


function class1.f1(const arg1:integer): boolean;    
begin
result:= arg1 > 0;
end;

function class2.f1(const arg1:integer): boolean;    
begin
result:= arg1 < 0;
end;


function ifunc1(const arg1: int1; const val:integer): boolean;
begin
result:= arg1.f1(val);   
end;

end.

дает ASM-код:
Код: Выделить всё
   .file "test.pas"
# Begin asmlist al_begin
# End asmlist al_begin
# Begin asmlist al_stabs
# End asmlist al_stabs
# Begin asmlist al_procedures

.section .text.n__main
   .balign 16,0x90
.globl   PASCALMAIN
PASCALMAIN:
.globl   _main
_main:
   subl   $8,%esp
   movl   %ebx,(%esp)
   movl   %esi,4(%esp)
   call   FPC_INITIALIZEUNITS
   movl   $0,%eax
   movl   $VMT_UNIT1_CLASS1,%edx
   call   SYSTEM_TOBJECT_$__CREATE$$TOBJECT
   movl   %eax,%ebx
   call   fpc_get_output
   movl   %eax,%esi
   movl   %ebx,%eax
   testl   %ebx,%ebx
   je   .Lj15
   addl   $4,%eax
.Lj15:
   movl   $2,%edx
   call   UNIT1_IFUNC1$INT1$LONGINT$$BOOLEAN
   movb   %al,%cl
   movl   $0,%ebx
   movl   %esi,%edx
   movl   %ebx,%eax
   call   fpc_write_text_boolean
   call   FPC_IOCHECK
   movl   %esi,%eax
   call   fpc_writeln_end
   call   FPC_IOCHECK
   movl   $VMT_UNIT1_CLASS2,%edx
   movl   $0,%eax
   call   SYSTEM_TOBJECT_$__CREATE$$TOBJECT
   movl   %eax,%esi
   call   fpc_get_output
   movl   %eax,%ebx
   movl   %esi,%eax
   testl   %esi,%esi
   je   .Lj36
   addl   $4,%eax
.Lj36:
   movl   $2,%edx
   call   UNIT1_IFUNC1$INT1$LONGINT$$BOOLEAN
   movb   %al,%cl
   movl   %ebx,%edx
   movl   $0,%eax
   call   fpc_write_text_boolean
   call   FPC_IOCHECK
   movl   %ebx,%eax
   call   fpc_writeln_end
   call   FPC_IOCHECK
   call   FPC_DO_EXIT
   movl   (%esp),%ebx
   movl   4(%esp),%esi
   addl   $8,%esp
   ret
# End asmlist al_procedures
# Begin asmlist al_globals

.section .bss
   .balign 4
   .comm   U_P$TEST1_CL1,4

.section .bss
   .balign 4
   .comm   U_P$TEST1_CL2,4

.section .data.n_THREADVARLIST_P$TEST1
   .balign 4
.globl   THREADVARLIST_P$TEST1
THREADVARLIST_P$TEST1:
   .long   0

.section .data.n_INITFINAL
   .balign 4
.globl   INITFINAL
INITFINAL:
   .long   2,0
   .long   INIT$_SYSTEM
   .long   0
   .long   INIT$_OBJPAS
   .long   FINALIZE$_OBJPAS

.section .data.n_FPC_THREADVARTABLES
   .balign 4
.globl   FPC_THREADVARTABLES
FPC_THREADVARTABLES:
   .long   5
   .long   THREADVARLIST_SYSTEM
   .long   THREADVARLIST_OBJPAS
   .long   THREADVARLIST_UNIT1
   .long   THREADVARLIST_SYSINITPAS
   .long   THREADVARLIST_P$TEST1

.section .data.n_FPC_RESOURCESTRINGTABLES
   .balign 4
.globl   FPC_RESOURCESTRINGTABLES
FPC_RESOURCESTRINGTABLES:
   .long   0

.section .fpc.n_version
   .balign 16
   .ascii   "FPC 2.2.3 [2009/08/14] for i386 - Win32"

.section .data.n___heapsize
   .balign 4
.globl   __heapsize
__heapsize:
   .long   0

.section .data.n___fpc_valgrind
.globl   __fpc_valgrind
__fpc_valgrind:
   .byte   0


или без виртуальности функции:

Код: Выделить всё
.section .text.n__main
   .balign 16,0x90
.globl   PASCALMAIN
PASCALMAIN:
.globl   _main
_main:
   subl   $8,%esp
   movl   %ebx,(%esp)
   movl   %esi,4(%esp)
   call   FPC_INITIALIZEUNITS
   movl   $0,%eax
   movl   $VMT_UNIT1_CLASS1,%edx
   call   SYSTEM_TOBJECT_$__CREATE$$TOBJECT
   movl   %eax,%ebx
   call   fpc_get_output
   movl   %eax,%esi
   movl   %ebx,%eax
   testl   %ebx,%ebx
   je   .Lj15
   addl   $4,%eax
.Lj15:
   movl   $2,%edx
   call   UNIT1_IFUNC1$INT1$LONGINT$$BOOLEAN
   movb   %al,%cl
   movl   $0,%ebx
   movl   %esi,%edx
   movl   %ebx,%eax
   call   fpc_write_text_boolean
   call   FPC_IOCHECK
   movl   %esi,%eax
   call   fpc_writeln_end
   call   FPC_IOCHECK
   movl   $VMT_UNIT1_CLASS2,%edx
   movl   $0,%eax
   call   SYSTEM_TOBJECT_$__CREATE$$TOBJECT
   movl   %eax,%esi
   call   fpc_get_output
   movl   %eax,%ebx
   movl   %esi,%eax
   testl   %esi,%esi
   je   .Lj36
   addl   $4,%eax
.Lj36:
   movl   $2,%edx
   call   UNIT1_IFUNC1$INT1$LONGINT$$BOOLEAN
   movb   %al,%cl
   movl   %ebx,%edx
   movl   $0,%eax
   call   fpc_write_text_boolean
   call   FPC_IOCHECK
   movl   %ebx,%eax
   call   fpc_writeln_end
   call   FPC_IOCHECK
   call   FPC_DO_EXIT
   movl   (%esp),%ebx
   movl   4(%esp),%esi
   addl   $8,%esp
   ret
# End asmlist al_procedures
# Begin asmlist al_globals

.section .bss
   .balign 4
   .comm   U_P$TEST1_CL1,4

.section .bss
   .balign 4
   .comm   U_P$TEST1_CL2,4

.section .data.n_THREADVARLIST_P$TEST1
   .balign 4
.globl   THREADVARLIST_P$TEST1
THREADVARLIST_P$TEST1:
   .long   0

.section .data.n_INITFINAL
   .balign 4
.globl   INITFINAL
INITFINAL:
   .long   2,0
   .long   INIT$_SYSTEM
   .long   0
   .long   INIT$_OBJPAS
   .long   FINALIZE$_OBJPAS

.section .data.n_FPC_THREADVARTABLES
   .balign 4
.globl   FPC_THREADVARTABLES
FPC_THREADVARTABLES:
   .long   5
   .long   THREADVARLIST_SYSTEM
   .long   THREADVARLIST_OBJPAS
   .long   THREADVARLIST_UNIT1
   .long   THREADVARLIST_SYSINITPAS
   .long   THREADVARLIST_P$TEST1

.section .data.n_FPC_RESOURCESTRINGTABLES
   .balign 4
.globl   FPC_RESOURCESTRINGTABLES
FPC_RESOURCESTRINGTABLES:
   .long   0

.section .fpc.n_version
   .balign 16
   .ascii   "FPC 2.2.3 [2009/08/14] for i386 - Win32"

.section .data.n___heapsize
   .balign 4
.globl   __heapsize
__heapsize:
   .long   0

.section .data.n___fpc_valgrind
.globl   __fpc_valgrind
__fpc_valgrind:
   .byte   0


Как видите - нет в нем никаких лишних вызовов.
Аватара пользователя
debi12345
долгожитель
 
Сообщения: 5759
Зарегистрирован: 10.05.2006 23:41:15
Откуда: Ташкент (Узбекистан)

Re: SemiOFF: Догнать и перегнать Delphi

Сообщение Sergei I. Gorelkin » 05.12.2009 10:06:19

Я забыл сказать о том, что это для COM-интерфейсов, каюсь...

И смотреть надо листинг не самой программы, а модуля unit1, т.к. программа вызвает не методы интерфейса, а обычную ф-цию, которой передается интерфейс.
Аватара пользователя
Sergei I. Gorelkin
энтузиаст
 
Сообщения: 1405
Зарегистрирован: 24.07.2005 14:40:41
Откуда: Зеленоград

Re: SemiOFF: Догнать и перегнать Delphi

Сообщение debi12345 » 05.12.2009 10:27:09

Код юнита тоже более чем в порядке, он в основном наполнен RTTI:

Код: Выделить всё
.section .text.n_unit1_class1_$__f1$longint$$boolean
   .balign 16,0x90
.globl   UNIT1_CLASS1_$__F1$LONGINT$$BOOLEAN
UNIT1_CLASS1_$__F1$LONGINT$$BOOLEAN:
   testl   %edx,%edx
   setgb   %al
   ret

.section .text.n_unit1_class2_$__f1$longint$$boolean
   .balign 16,0x90
.globl   UNIT1_CLASS2_$__F1$LONGINT$$BOOLEAN
UNIT1_CLASS2_$__F1$LONGINT$$BOOLEAN:
   testl   %edx,%edx
   setlb   %al
   ret

.section .text.n_unit1_ifunc1$int1$longint$$boolean
   .balign 16,0x90
.globl   UNIT1_IFUNC1$INT1$LONGINT$$BOOLEAN
UNIT1_IFUNC1$INT1$LONGINT$$BOOLEAN:
   movl   (%eax),%ecx
   call   *(%ecx)
   ret

.section .text.n_WRPR_UNIT1_CLASS1_$_INT1_$_0_$_UNIT1_CLASS1_$__F1$LONGINT$$BOOLEAN
.globl   WRPR_UNIT1_CLASS1_$_INT1_$_0_$_UNIT1_CLASS1_$__F1$LONGINT$$BOOLEAN
WRPR_UNIT1_CLASS1_$_INT1_$_0_$_UNIT1_CLASS1_$__F1$LONGINT$$BOOLEAN:
   subl   $4,%eax
   jmp   UNIT1_CLASS1_$__F1$LONGINT$$BOOLEAN

.section .text.n_WRPR_UNIT1_CLASS2_$_INT1_$_0_$_UNIT1_CLASS2_$__F1$LONGINT$$BOOLEAN
.globl   WRPR_UNIT1_CLASS2_$_INT1_$_0_$_UNIT1_CLASS2_$__F1$LONGINT$$BOOLEAN
WRPR_UNIT1_CLASS2_$_INT1_$_0_$_UNIT1_CLASS2_$__F1$LONGINT$$BOOLEAN:
   subl   $4,%eax
   jmp   UNIT1_CLASS2_$__F1$LONGINT$$BOOLEAN
# End asmlist al_procedures
# Begin asmlist al_globals

.section .data.n_IID_UNIT1_INT1
   .balign 4
.globl   IID_UNIT1_INT1
IID_UNIT1_INT1:
   .long   0
   .short   0,0
   .byte   0,0,0,0,0,0,0,0

.section .data.n_IIDSTR_UNIT1_INT1
.globl   IIDSTR_UNIT1_INT1
IIDSTR_UNIT1_INT1:
   .byte   0

.section .data.n__$UNIT1$_Ld1
   .balign 4
   .balign 4
.globl   _$UNIT1$_Ld2
_$UNIT1$_Ld2:
   .long   1,0
   .long   VTBL_UNIT1_CLASS1_$_INT1
   .long   4
   .long   _$UNIT1$_Ld3
   .long   0

.section .data.n_VTBL_UNIT1_CLASS1_$_INT1
   .balign 4
.globl   VTBL_UNIT1_CLASS1_$_INT1
VTBL_UNIT1_CLASS1_$_INT1:
   .long   WRPR_UNIT1_CLASS1_$_INT1_$_0_$_UNIT1_CLASS1_$__F1$LONGINT$$BOOLEAN
   .balign 4
.globl   _$UNIT1$_Ld3
_$UNIT1$_Ld3:
   .byte   0
.globl   _$UNIT1$_Ld1
_$UNIT1$_Ld1:
   .byte   6
   .ascii   "class1"

.section .data.n_VMT_UNIT1_CLASS1
   .balign 4
.globl   VMT_UNIT1_CLASS1
VMT_UNIT1_CLASS1:
   .long   8,-8
   .long   VMT_SYSTEM_TOBJECT
   .long   _$UNIT1$_Ld1
   .long   0,0
   .long   _$UNIT1$_Ld4
   .long   0,0,0
   .long   _$UNIT1$_Ld2
   .long   0
   .long   SYSTEM_TOBJECT_$__DESTROY
   .long   SYSTEM_TOBJECT_$__NEWINSTANCE$$TOBJECT
   .long   SYSTEM_TOBJECT_$__FREEINSTANCE
   .long   SYSTEM_TOBJECT_$__SAFECALLEXCEPTION$TOBJECT$POINTER$$LONGINT
   .long   SYSTEM_TOBJECT_$__DEFAULTHANDLER$formal
   .long   SYSTEM_TOBJECT_$__AFTERCONSTRUCTION
   .long   SYSTEM_TOBJECT_$__BEFOREDESTRUCTION
   .long   SYSTEM_TOBJECT_$__DEFAULTHANDLERSTR$formal
   .long   0

.section .data.n__$UNIT1$_Ld6
   .balign 4
   .balign 4
.globl   _$UNIT1$_Ld7
_$UNIT1$_Ld7:
   .long   1,0
   .long   VTBL_UNIT1_CLASS2_$_INT1
   .long   4
   .long   _$UNIT1$_Ld8
   .long   0

.section .data.n_VTBL_UNIT1_CLASS2_$_INT1
   .balign 4
.globl   VTBL_UNIT1_CLASS2_$_INT1
VTBL_UNIT1_CLASS2_$_INT1:
   .long   WRPR_UNIT1_CLASS2_$_INT1_$_0_$_UNIT1_CLASS2_$__F1$LONGINT$$BOOLEAN
   .balign 4
.globl   _$UNIT1$_Ld8
_$UNIT1$_Ld8:
   .byte   0
.globl   _$UNIT1$_Ld6
_$UNIT1$_Ld6:
   .byte   6
   .ascii   "class2"

.section .data.n_VMT_UNIT1_CLASS2
   .balign 4
.globl   VMT_UNIT1_CLASS2
VMT_UNIT1_CLASS2:
   .long   8,-8
   .long   VMT_SYSTEM_TOBJECT
   .long   _$UNIT1$_Ld6
   .long   0,0
   .long   _$UNIT1$_Ld9
   .long   0,0,0
   .long   _$UNIT1$_Ld7
   .long   0
   .long   SYSTEM_TOBJECT_$__DESTROY
   .long   SYSTEM_TOBJECT_$__NEWINSTANCE$$TOBJECT
   .long   SYSTEM_TOBJECT_$__FREEINSTANCE
   .long   SYSTEM_TOBJECT_$__SAFECALLEXCEPTION$TOBJECT$POINTER$$LONGINT
   .long   SYSTEM_TOBJECT_$__DEFAULTHANDLER$formal
   .long   SYSTEM_TOBJECT_$__AFTERCONSTRUCTION
   .long   SYSTEM_TOBJECT_$__BEFOREDESTRUCTION
   .long   SYSTEM_TOBJECT_$__DEFAULTHANDLERSTR$formal
   .long   0

.section .data.n_THREADVARLIST_UNIT1
   .balign 4
.globl   THREADVARLIST_UNIT1
THREADVARLIST_UNIT1:
   .long   0

.section .data.n_INIT_UNIT1_INT1
   .balign 4
.globl   INIT_UNIT1_INT1
INIT_UNIT1_INT1:
   .byte   22,4
   .ascii   "int1"
   .long   4

.section .data.n_RTTI_UNIT1_INT1
   .balign 4
.globl   RTTI_UNIT1_INT1
RTTI_UNIT1_INT1:
   .byte   22,4
   .ascii   "int1"
   .long   0,9,0
   .short   0,0
   .byte   0,0,0,0,0,0,0,0,5
   .ascii   "unit1"
   .byte   0

.section .data.n__$UNIT1$_Ld5
   .balign 4
.globl   _$UNIT1$_Ld4
_$UNIT1$_Ld4:
   .short   0
   .long   _$UNIT1$_Ld5
   .balign 4
.globl   _$UNIT1$_Ld5
_$UNIT1$_Ld5:
   .short   0

.section .data.n_INIT_UNIT1_CLASS1
   .balign 4
.globl   INIT_UNIT1_CLASS1
INIT_UNIT1_CLASS1:
   .byte   15,6
   .ascii   "class1"
   .long   4,0

.section .data.n_RTTI_UNIT1_CLASS1
   .balign 4
.globl   RTTI_UNIT1_CLASS1
RTTI_UNIT1_CLASS1:
   .byte   15,6
   .ascii   "class1"
   .long   VMT_UNIT1_CLASS1
   .long   0
   .short   0
   .byte   5
   .ascii   "unit1"
   .short   0

.section .data.n__$UNIT1$_Ld10
   .balign 4
.globl   _$UNIT1$_Ld9
_$UNIT1$_Ld9:
   .short   0
   .long   _$UNIT1$_Ld10
   .balign 4
.globl   _$UNIT1$_Ld10
_$UNIT1$_Ld10:
   .short   0

.section .data.n_INIT_UNIT1_CLASS2
   .balign 4
.globl   INIT_UNIT1_CLASS2
INIT_UNIT1_CLASS2:
   .byte   15,6
   .ascii   "class2"
   .long   4,0

.section .data.n_RTTI_UNIT1_CLASS2
   .balign 4
.globl   RTTI_UNIT1_CLASS2
RTTI_UNIT1_CLASS2:
   .byte   15,6
   .ascii   "class2"
   .long   VMT_UNIT1_CLASS2
   .long   0
   .short   0
   .byte   5
   .ascii   "unit1"
   .short   0

Насчет СОМ... Хмм...
Аватара пользователя
debi12345
долгожитель
 
Сообщения: 5759
Зарегистрирован: 10.05.2006 23:41:15
Откуда: Ташкент (Узбекистан)

Пред.След.

Вернуться в Потрепаться

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 14

Рейтинг@Mail.ru