А нужен ли нам CRT?
От: LaFlour Австралия blog: http://spaces.live.com/laflour
Дата: 13.01.04 07:06
Оценка:
Собтвенно есть Windows функции, которые более менее перекрывают CRT. то что не перекрывает МОЖНО реализовать и windows ф-ями.
Спрашивается, а на кой нам тогда нужен CTR? Может стоит вообще от него оттказаться? Будет ли выйгрыш в производительности по сравнению с затратами на кодирование? Врядтли. Но имхо стоит смотреть вперед.
Re: А нужен ли нам CRT?
От: Leonid V. Volnin Россия  
Дата: 13.01.04 07:53
Оценка: 1 (1)
Здравствуйте, LaFlour, Вы писали:

LF>Собтвенно есть Windows функции, которые более менее перекрывают CRT. то что не перекрывает МОЖНО реализовать и windows ф-ями.

LF>Спрашивается, а на кой нам тогда нужен CTR? Может стоит вообще от него оттказаться? Будет ли выйгрыш в производительности по сравнению с затратами на кодирование? Врядтли. Но имхо стоит смотреть вперед.

CRT (если я правильно понимаю, C RunTime [library]) нужон для совместимости с POSIX-ом. К тому же они и так через WinAPI реализованы (ну кроме самых тривиальных).
best regards, Leonid
Re: А нужен ли нам CRT?
От: Денис Майдыковский Россия http://www.maydyk.com
Дата: 13.01.04 09:36
Оценка:
Здравствуйте, LaFlour, Вы писали:

LF>Спрашивается, а на кой нам тогда нужен CTR? Может стоит вообще от него оттказаться?


double x = sqrt(2.0f);
char msg[80];
sprintf(msf, "Square root: %7.3f", x);


А теперь вопроизведи это на API.
Re[2]: А нужен ли нам CRT?
От: Dr_Sh0ck Беларусь  
Дата: 13.01.04 09:43
Оценка:
Здравствуйте, Денис Майдыковский, Вы писали:

ДМ>
ДМ>double x = sqrt(2.0f);
ДМ>char msg[80];
ДМ>sprintf(msf, "Square root: %7.3f", x);
ДМ>


ДМ>А теперь вопроизведи это на API.



Да элементарно. См. wsprintf
Do not fake yourself ;)
ICQ#: 198114726
Re[3]: А нужен ли нам CRT?
От: Sergey Россия  
Дата: 13.01.04 10:07
Оценка:
Hello, Dr_Sh0ck!
You wrote on Tue, 13 Jan 2004 09:43:42 GMT:

ДМ>>
 ДМ>> double x = sqrt(2.0f);
 ДМ>> char msg[80];
 ДМ>> sprintf(msf, "Square root: %7.3f", x);
 ДМ>>


ДМ>> А теперь вопроизведи это на API.


DS> Да элементарно. См. wsprintf


Сам смотри, только внимательно, особенно — на поддерживаемые типы выводимых значений.

Best regards,
Sergey.
Posted via RSDN NNTP Server 1.8 beta
Одним из 33 полных кавалеров ордена "За заслуги перед Отечеством" является Геннадий Хазанов.
Re: А нужен ли нам CRT?
От: Аноним  
Дата: 13.01.04 10:17
Оценка:
Здравствуйте, LaFlour, Вы писали:

LF>Собтвенно есть Windows функции, которые более менее перекрывают CRT. то что не перекрывает МОЖНО реализовать и windows ф-ями.

LF>Спрашивается, а на кой нам тогда нужен CTR? Может стоит вообще от него оттказаться? Будет ли выйгрыш в производительности по сравнению с затратами на кодирование? Врядтли. Но имхо стоит смотреть вперед.

Не знаю как тебе, а мне лично нужен, чтобы иметь некий базис для многоплатформенной реализации части приложения.
Re: А нужен ли нам CRT?
От: Евгений Коробко  
Дата: 13.01.04 10:17
Оценка:
Здравствуйте, LaFlour, Вы писали:

LF>Собтвенно есть Windows функции, которые более менее перекрывают CRT. то что не перекрывает МОЖНО реализовать и windows ф-ями.

LF>Спрашивается, а на кой нам тогда нужен CTR? Может стоит вообще от него оттказаться? Будет ли выйгрыш в производительности по сравнению с затратами на кодирование? Врядтли. Но имхо стоит смотреть вперед.
Евгений Коробко
Re: А нужен ли нам CRT?
От: Евгений Коробко  
Дата: 13.01.04 10:22
Оценка:
Глюк какой-то был. Так вот, если убрать CRT, то кто будет инициализировать кучу? Кто будет вызывать конструкторы глобальных объектов? Создавать стандартные потоки (stdout и пр.)? Ловить необработанное исключение?
Евгений Коробко
Re[2]: А нужен ли нам CRT?
От: Шахтер Интернет  
Дата: 13.01.04 20:29
Оценка:
Здравствуйте, Евгений Коробко, Вы писали:

ЕК>Глюк какой-то был. Так вот, если убрать CRT, то кто будет инициализировать кучу? Кто будет вызывать конструкторы глобальных объектов? Создавать стандартные потоки (stdout и пр.)? Ловить необработанное исключение?


По поводу кучи. Windows создают для процесса default овый WinHeap при инициализации процесса. Так что куча уже есть. Кстати, CRT банально создаёт свой собственный WinHeap для кучи.
Необработанные исключения система тоже ловит и выводит хорошо знакомое всем окошко с предложением обратится к разработчику.

Если я ничего не запамятовал, то, действительно, остаётся обработка глобальных объектов, поддержка инфраструктуры C++ исключений и как часть обработки глобальных объектов, создание/уничтожение стандартных потоков для консольных приложений.
... << RSDN@Home 1.1.0 stable >>
В XXI век с CCore.
Копай Нео, копай -- летать научишься. © Matrix. Парадоксы
Re: А нужен ли нам CRT?
От: VladD2 Российская Империя www.nemerle.org
Дата: 14.01.04 02:32
Оценка: :)
Здравствуйте, LaFlour, Вы писали:

LF>Собтвенно есть Windows функции, которые более менее перекрывают CRT. то что не перекрывает МОЖНО реализовать и windows ф-ями.

LF>Спрашивается, а на кой нам тогда нужен CTR? Может стоит вообще от него оттказаться? Будет ли выйгрыш в производительности по сравнению с затратами на кодирование? Врядтли. Но имхо стоит смотреть вперед.

Конечно нужен!!! Как же без него дотнет запускать?
... << RSDN@Home 1.1.2 beta 3 >>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[3]: А нужен ли нам CRT?
От: Kaa Украина http://blog.meta.ua/users/kaa/
Дата: 14.01.04 16:04
Оценка:
Здравствуйте, Шахтер, Вы писали:

Ш>Если я ничего не запамятовал...

Плавающую точку забыл.
Алексей Кирдин
Re: А нужен ли нам CRT?
От: _nn_ www.nemerleweb.com
Дата: 14.01.04 16:55
Оценка:
Здравствуйте, LaFlour, Вы писали:

LF>Собтвенно есть Windows функции, которые более менее перекрывают CRT. то что не перекрывает МОЖНО реализовать и windows ф-ями.

LF>Спрашивается, а на кой нам тогда нужен CTR? Может стоит вообще от него оттказаться? Будет ли выйгрыш в производительности по сравнению с затратами на кодирование? Врядтли. Но имхо стоит смотреть вперед.

К сожалению нужен , так как в Windows нет аналогов всех функций из CRT.
Но можно пользоваться облегченным CRT , если написать свой , или использовать от CRT от ATL.

P.S.
Если кто-то напишет аналог СRT , но менее весомый будет очень хорошо
http://rsdn.nemerleweb.com
http://nemerleweb.com
Re[2]: А нужен ли нам CRT?
От: Евгений Коробко  
Дата: 15.01.04 05:15
Оценка: 1 (1)
Есть tinycrt. Почитать можно здесь http://www.microsoft.com/msj/archive/S569.aspx
Скачать здесь http://www.wheaty.net/libctiny.zip
Posted via RSDN NNTP Server 1.8 beta
Евгений Коробко
Re: А нужен ли нам CRT?
От: mihailik Украина  
Дата: 15.01.04 17:29
Оценка:
LF>Спрашивается, а на кой нам тогда нужен CTR?

В небольшой утилите под Windows вполне можно обойтись. Где-то в MSDN я похожую статью читал.

А уж если драйвер писать, так MS вообще советует поменьше всякой мути подключать.
... << RSDN@Home 1.1.0 stable >>
Re[2]: А нужен ли нам CRT?
От: Alexey Shirshov Россия http://wise-orm.com
Дата: 23.01.04 06:59
Оценка:
Здравствуйте, _nn_, Вы писали:

[]

__>К сожалению нужен , так как в Windows нет аналогов всех функций из CRT.

__>Но можно пользоваться облегченным CRT , если написать свой , или использовать от CRT от ATL.

__>P.S.

__>Если кто-то напишет аналог СRT , но менее весомый будет очень хорошо

В ntdll.dll есть реализация CRT, при чем очень не плохая.
Re: А нужен ли нам CRT?
От: Аноним  
Дата: 27.01.04 09:50
Оценка:
Здравствуйте, LaFlour, Вы писали:

LF>Собтвенно есть Windows функции, которые более менее перекрывают CRT. то что не перекрывает МОЖНО реализовать и windows ф-ями.

LF>Спрашивается, а на кой нам тогда нужен CTR? Может стоит вообще от него оттказаться? Будет ли выйгрыш в производительности по сравнению с затратами на кодирование? Врядтли. Но имхо стоит смотреть вперед.

Иногда нужен, иногда с этим можно и побороться, подробнее смотри здесь
Автор(ы): Виталий Брусенцев
Дата: 19.01.02
Статья посвящена вопросам оптимизации размера выполняемых модулей, генерируемых различными
компиляторами C++ (основное внимание уделено MS Visual С++). С этой целью рассматриваются особенности Библиотеки исполнения C/C++ и ее реализаций, а также процессы компиляции и компоновки приложений. Приведены практические приемы, позволяющие в ряде случаев уменьшить размер приложения до величины 3-4 килобайта.
.
Re: А нужен ли нам CRT?
От: Аноним  
Дата: 28.01.04 08:42
Оценка:
Мне как-то не нравится линковать CRT ради пары функций. Например. если надо rand(), то я лучше свою напишу. Аналогично, если нужны sin() и cos(), то, по-моему, проще создатить массивы. Ну а если надо, например, отформатировать double, то тут, как кто-то уже заметил, не обойтись одними Win API.
Re[2]: А нужен ли нам CRT?
От: _nn_ www.nemerleweb.com
Дата: 28.01.04 09:37
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Мне как-то не нравится линковать CRT ради пары функций. Например. если надо rand(), то я лучше свою напишу. Аналогично, если нужны sin() и cos(), то, по-моему, проще создатить массивы. Ну а если надо, например, отформатировать double, то тут, как кто-то уже заметил, не обойтись одними Win API.


Было бы неплохо если бы CRT ,которая идет в студии, состояла из нескольких частей :
например математические функции, работа со строками , работа с плавающей запятой и т.д.
Т.е. в программы можно было бы добавить ту часть которая нужна , а не тащить все, из которого половина не используется.
http://rsdn.nemerleweb.com
http://nemerleweb.com
Re[3]: А нужен ли нам CRT?
От: Аноним  
Дата: 28.01.04 09:48
Оценка:
__>Было бы неплохо если бы CRT ,которая идет в студии, состояла из нескольких частей :
__>например математические функции, работа со строками , работа с плавающей запятой и т.д.
__>Т.е. в программы можно было бы добавить ту часть которая нужна , а не тащить все, из которого половина не используется.

Если линковать динамически, то тебе не пофиг?
А если статически, то, может быть, линкер делает какие-то оптимизации? Выкидывает ненужное?
Re[4]: А нужен ли нам CRT?
От: _nn_ www.nemerleweb.com
Дата: 28.01.04 10:38
Оценка:
Здравствуйте, Аноним, Вы писали:

__>>Было бы неплохо если бы CRT ,которая идет в студии, состояла из нескольких частей :

__>>например математические функции, работа со строками , работа с плавающей запятой и т.д.
__>>Т.е. в программы можно было бы добавить ту часть которая нужна , а не тащить все, из которого половина не используется.

А>Если линковать динамически, то тебе не пофиг?

Это почему ?
Можно например вместо msvcr71.dll ,которая берет 300кб взять ,например, math.dll , которая берет в несколько раз меньше.
Но если есть несколько программ , то тогда действительно без разницы будет.
А>А если статически, то, может быть, линкер делает какие-то оптимизации? Выкидывает ненужное?
А это нужно проверить.
http://rsdn.nemerleweb.com
http://nemerleweb.com
Re[5]: А нужен ли нам CRT?
От: Шахтер Интернет  
Дата: 29.01.04 03:20
Оценка: +1
Здравствуйте, _nn_, Вы писали:

__>Здравствуйте, Аноним, Вы писали:


__>>>Было бы неплохо если бы CRT ,которая идет в студии, состояла из нескольких частей :

__>>>например математические функции, работа со строками , работа с плавающей запятой и т.д.
__>>>Т.е. в программы можно было бы добавить ту часть которая нужна , а не тащить все, из которого половина не используется.

А>>Если линковать динамически, то тебе не пофиг?

__>Это почему ?
__>Можно например вместо msvcr71.dll ,которая берет 300кб взять ,например, math.dll , которая берет в несколько раз меньше.

Что значит, берет? Куда берет? В виндах ни exe-шник, ни dll-ки не грузятся в память а проектируются. Единственный расход памяти -- на таблицу страниц в ядре, да и то, если я не ошибаюсь, в XP и это дело пофиксили.

__>Но если есть несколько программ , то тогда действительно без разницы будет.

А>>А если статически, то, может быть, линкер делает какие-то оптимизации? Выкидывает ненужное?

Выкидывает. Кроме некоторго ядра, которое в последнем VC небольшое.

__>А это нужно проверить.


Легко. Ну вот у меня при линковке со статической библой голой функции main() получается exe-шник 22016, а при линковке с динамической -- 3584.

Вот map файл для статической библы. Изучайте на здоровье.

Test

Timestamp is 4018796c (Wed Jan 28 22:09:32 2004)

Preferred load address is 00400000

Start Length Name Class
0001:00000000 00003b48H .text CODE
0002:00000000 000000c4H .idata$5 DATA
0002:000000d0 00000c40H .rdata DATA
0002:00000d10 00000046H .rdata$debug DATA
0002:00000d60 00000008H .rdata$sxdata DATA
0002:00000d68 00000004H .rtc$IAA DATA
0002:00000d6c 00000004H .rtc$IZZ DATA
0002:00000d70 00000004H .rtc$TAA DATA
0002:00000d74 00000004H .rtc$TZZ DATA
0002:00000d78 00000014H .idata$2 DATA
0002:00000d8c 00000014H .idata$3 DATA
0002:00000da0 000000c4H .idata$4 DATA
0002:00000e64 00000366H .idata$6 DATA
0002:000011ca 00000000H .edata DATA
0003:00000000 00000004H .CRT$XCA DATA
0003:00000004 00000004H .CRT$XCAA DATA
0003:00000008 00000004H .CRT$XCZ DATA
0003:0000000c 00000004H .CRT$XIA DATA
0003:00000010 00000008H .CRT$XIC DATA
0003:00000018 00000004H .CRT$XIZ DATA
0003:0000001c 00000004H .CRT$XPA DATA
0003:00000020 00000004H .CRT$XPZ DATA
0003:00000024 00000004H .CRT$XTA DATA
0003:00000028 00000004H .CRT$XTZ DATA
0003:00000030 00000274H .data DATA
0003:000002c0 00000598H .bss DATA

Address Publics by Value Rva+Base Lib:Object

0000:00000000 __except_list 00000000 <absolute>
0000:00000002 ___safe_se_handler_count 00000002 <absolute>
0001:00000000 _main 00401000 f main.obj
0001:00000003 __amsg_exit 00401003 f LIBC:crt0.obj
0001:00000028 _mainCRTStartup 00401028 f LIBC:crt0.obj
0001:000001ef ___crtExitProcess 004011ef f LIBC:crt0dat.obj
0001:0000021f __cinit 0040121f f LIBC:crt0dat.obj
0001:0000034a _exit 0040134a f LIBC:crt0dat.obj
0001:0000035b __exit 0040135b f LIBC:crt0dat.obj
0001:0000036c __cexit 0040136c f LIBC:crt0dat.obj
0001:0000037b __c_exit 0040137b f LIBC:crt0dat.obj
0001:0000038a __NMSG_WRITE 0040138a f LIBC:crt0msg.obj
0001:00000501 __FF_MSGBANNER 00401501 f LIBC:crt0msg.obj
0001:0000053a __XcptFilter 0040153a f LIBC:winxfltr.obj
0001:000006ab __setenvp 004016ab f LIBC:stdenvp.obj
0001:000008de __setargv 004018de f LIBC:stdargv.obj
0001:00000980 ___crtGetEnvironmentStringsA 00401980 f LIBC:a_env.obj
0001:00000aa2 __ioinit 00401aa2 f LIBC:ioinit.obj
0001:00000c4d __RTC_Initialize 00401c4d f LIBC:initsect.obj
0001:00000c91 __RTC_Terminate 00401c91 f LIBC:initsect.obj
0001:00000cd5 ___heap_select 00401cd5 f LIBC:heapinit.obj
0001:00000cef __heap_init 00401cef f LIBC:heapinit.obj
0001:00000d40 __SEH_prolog 00401d40 f LIBC:sehprolg.obj
0001:00000d7b __SEH_epilog 00401d7b f LIBC:sehprolg.obj
0001:00000d94 __except_handler3 00401d94 f LIBC:exsup3.obj
0001:00000e7a __seh_longjmp_unwind@4 00401e7a f LIBC:exsup3.obj
0001:00000ea0 __alloca_probe 00401ea0 LIBC:chkstk.obj
0001:00000ea0 __chkstk 00401ea0 f LIBC:chkstk.obj
0001:00000edd __onexit 00401edd f LIBC:onexit.obj
0001:00000f5f _atexit 00401f5f f LIBC:onexit.obj
0001:00000f71 ___onexitinit 00401f71 f LIBC:onexit.obj
0001:00000f99 ___crtMessageBoxA 00401f99 f LIBC:crtmbox.obj
0001:000010a0 _strcpy 004020a0 f LIBC:strcat.obj
0001:000010b0 _strcat 004020b0 f LIBC:strcat.obj
0001:000011a0 _strncpy 004021a0 f LIBC:strncpy.obj
0001:000012d0 _strlen 004022d0 f LIBC:strlen.obj
0001:0000138c @__security_check_cookie@4 0040238c f LIBC:secchk.obj
0001:0000139a _free 0040239a f LIBC:free.obj
0001:000013d2 __heap_alloc 004023d2 f LIBC:malloc.obj
0001:00001418 __nh_malloc 00402418 f LIBC:malloc.obj
0001:00001444 _malloc 00402444 f LIBC:malloc.obj
0001:0000163a __setmbcp 0040263a f LIBC:mbctype.obj
0001:00001820 ___initmbctable 00402820 f LIBC:mbctype.obj
0001:00001840 _memcpy 00402840 f LIBC:memcpy.obj
0001:00001b7d ___sbh_heap_init 00402b7d f LIBC:sbheap.obj
0001:00001bc5 ___sbh_find_block 00402bc5 f LIBC:sbheap.obj
0001:00001bf0 ___sbh_free_block 00402bf0 f LIBC:sbheap.obj
0001:00001f08 ___sbh_alloc_new_region 00402f08 f LIBC:sbheap.obj
0001:00001fbf ___sbh_alloc_new_group 00402fbf f LIBC:sbheap.obj
0001:000020c5 ___sbh_resize_block 004030c5 f LIBC:sbheap.obj
0001:000023a4 ___sbh_alloc_block 004033a4 f LIBC:sbheap.obj
0001:000026a0 __global_unwind2 004036a0 f LIBC:exsup.obj
0001:000026e2 __local_unwind2 004036e2 f LIBC:exsup.obj
0001:0000273a __NLG_Return2 0040373a LIBC:exsup.obj
0001:0000274a __abnormal_termination 0040374a f LIBC:exsup.obj
0001:0000276d __NLG_Notify1 0040376d f LIBC:exsup.obj
0001:00002776 __NLG_Notify 00403776 f LIBC:exsup.obj
0001:00002789 __NLG_Dispatch 00403789 LIBC:exsup.obj
0001:0000278e __ValidateEH3RN 0040378e f LIBC:eh3valid.obj
0001:000029b7 _realloc 004039b7 f LIBC:realloc.obj
0001:00002b19 __msize 00403b19 f LIBC:msize.obj
0001:00002b51 ___security_init_cookie 00403b51 f LIBC:seccinit.obj
0001:00002bb7 ___security_error_handler 00403bb7 f LIBC:secfail.obj
0001:00002cff __callnewh 00403cff f LIBC:handler.obj
0001:00002d1a ___crtLCMapStringA 00403d1a f LIBC:a_map.obj
0001:000030d6 ___crtGetStringTypeA 004040d6 f LIBC:a_str.obj
0001:00003290 _memmove 00404290 f LIBC:memmove.obj
0001:000035d0 _memset 004045d0 f LIBC:memset.obj
0001:00003630 ___ansicp 00404630 f LIBC:convrtcp.obj
0001:00003673 ___convertcp 00404673 f LIBC:convrtcp.obj
0001:0000383c __resetstkoflw 0040483c f LIBC:resetstk.obj
0001:0000391f _calloc 0040491f f LIBC:calloc.obj
0001:0000399a _atol 0040499a f LIBC:atox.obj
0001:000039f2 __ismbcspace 004049f2 f LIBC:ismbspc.obj
0001:00003a90 __allmul 00404a90 f LIBC:llmul.obj
0001:00003ac4 __isctype 00404ac4 f LIBC:isctype.obj
0001:00003b42 _RtlUnwind@16 00404b42 f kernel32:KERNEL32.dll
0002:00000000 __imp__GetModuleHandleA@4 00405000 kernel32:KERNEL32.dll
0002:00000004 __imp__GetCommandLineA@0 00405004 kernel32:KERNEL32.dll
0002:00000008 __imp__GetVersionExA@4 00405008 kernel32:KERNEL32.dll
0002:0000000c __imp__ExitProcess@4 0040500c kernel32:KERNEL32.dll
0002:00000010 __imp__GetProcAddress@8 00405010 kernel32:KERNEL32.dll
0002:00000014 __imp__TerminateProcess@8 00405014 kernel32:KERNEL32.dll
0002:00000018 __imp__GetCurrentProcess@0 00405018 kernel32:KERNEL32.dll
0002:0000001c __imp__WriteFile@20 0040501c kernel32:KERNEL32.dll
0002:00000020 __imp__GetStdHandle@4 00405020 kernel32:KERNEL32.dll
0002:00000024 __imp__GetModuleFileNameA@12 00405024 kernel32:KERNEL32.dll
0002:00000028 __imp__UnhandledExceptionFilter@4 00405028 kernel32:KERNEL32.dll
0002:0000002c __imp__FreeEnvironmentStringsA@4 0040502c kernel32:KERNEL32.dll
0002:00000030 __imp__GetEnvironmentStrings@0 00405030 kernel32:KERNEL32.dll
0002:00000034 __imp__FreeEnvironmentStringsW@4 00405034 kernel32:KERNEL32.dll
0002:00000038 __imp__WideCharToMultiByte@32 00405038 kernel32:KERNEL32.dll
0002:0000003c __imp__GetLastError@0 0040503c kernel32:KERNEL32.dll
0002:00000040 __imp__GetEnvironmentStringsW@0 00405040 kernel32:KERNEL32.dll
0002:00000044 __imp__SetHandleCount@4 00405044 kernel32:KERNEL32.dll
0002:00000048 __imp__GetFileType@4 00405048 kernel32:KERNEL32.dll
0002:0000004c __imp__GetStartupInfoA@4 0040504c kernel32:KERNEL32.dll
0002:00000050 __imp__HeapDestroy@4 00405050 kernel32:KERNEL32.dll
0002:00000054 __imp__HeapCreate@12 00405054 kernel32:KERNEL32.dll
0002:00000058 __imp__VirtualFree@12 00405058 kernel32:KERNEL32.dll
0002:0000005c __imp__HeapFree@12 0040505c kernel32:KERNEL32.dll
0002:00000060 __imp__LoadLibraryA@4 00405060 kernel32:KERNEL32.dll
0002:00000064 __imp__HeapAlloc@12 00405064 kernel32:KERNEL32.dll
0002:00000068 __imp__GetACP@0 00405068 kernel32:KERNEL32.dll
0002:0000006c __imp__GetOEMCP@0 0040506c kernel32:KERNEL32.dll
0002:00000070 __imp__GetCPInfo@8 00405070 kernel32:KERNEL32.dll
0002:00000074 __imp__VirtualAlloc@16 00405074 kernel32:KERNEL32.dll
0002:00000078 __imp__HeapReAlloc@16 00405078 kernel32:KERNEL32.dll
0002:0000007c __imp__RtlUnwind@16 0040507c kernel32:KERNEL32.dll
0002:00000080 __imp__InterlockedExchange@8 00405080 kernel32:KERNEL32.dll
0002:00000084 __imp__VirtualQuery@12 00405084 kernel32:KERNEL32.dll
0002:00000088 __imp__HeapSize@12 00405088 kernel32:KERNEL32.dll
0002:0000008c __imp__QueryPerformanceCounter@4 0040508c kernel32:KERNEL32.dll
0002:00000090 __imp__GetTickCount@0 00405090 kernel32:KERNEL32.dll
0002:00000094 __imp__GetCurrentThreadId@0 00405094 kernel32:KERNEL32.dll
0002:00000098 __imp__GetCurrentProcessId@0 00405098 kernel32:KERNEL32.dll
0002:0000009c __imp__GetSystemTimeAsFileTime@4 0040509c kernel32:KERNEL32.dll
0002:000000a0 __imp__LCMapStringA@24 004050a0 kernel32:KERNEL32.dll
0002:000000a4 __imp__MultiByteToWideChar@24 004050a4 kernel32:KERNEL32.dll
0002:000000a8 __imp__LCMapStringW@24 004050a8 kernel32:KERNEL32.dll
0002:000000ac __imp__GetStringTypeA@20 004050ac kernel32:KERNEL32.dll
0002:000000b0 __imp__GetStringTypeW@16 004050b0 kernel32:KERNEL32.dll
0002:000000b4 __imp__GetLocaleInfoA@16 004050b4 kernel32:KERNEL32.dll
0002:000000b8 __imp__VirtualProtect@16 004050b8 kernel32:KERNEL32.dll
0002:000000bc __imp__GetSystemInfo@4 004050bc kernel32:KERNEL32.dll
0002:000000c0 \177KERNEL32_NULL_THUNK_DATA 004050c0 kernel32:KERNEL32.dll
0002:000000fc ??_C@_0P@MIGLKIOC@CorExitProcess?$AA@ 004050fc LIBC:crt0dat.obj
0002:0000010c ??_C@_0M@MBOPBNBK@mscoree?4dll?$AA@ 0040510c LIBC:crt0dat.obj
0002:00000118 ??_C@_0P@GGKDKEEG@runtime?5error?5?$AA@ 00405118 LIBC:crt0msg.obj
0002:00000128 ??_C@_02PCIJFNDE@?$AN?6?$AA@ 00405128 LIBC:crt0msg.obj
0002:0000012c ??_C@_0O@MJNIPGOH@TLOSS?5error?$AN?6?$AA@ 0040512c LIBC:crt0msg.obj
0002:0000013c ??_C@_0N@BONNPDHF@SING?5error?$AN?6?$AA@ 0040513c LIBC:crt0msg.obj
0002:0000014c ??_C@_0P@MBDAJNE@DOMAIN?5error?$AN?6?$AA@ 0040514c LIBC:crt0msg.obj
0002:00000160 ??_C@_0KC@BDDGGBEJ@R6029?$AN?6?9?5This?5application?5cannot@ 00405160 LIBC:crt0msg.obj
0002:00000204 ??_C@_0CF@KJDAIALP@R6028?$AN?6?9?5unable?5to?5initialize?5he@ 00405204 LIBC:crt0msg.obj
0002:0000022c ??_C@_0DF@GAKBPDFP@R6027?$AN?6?9?5not?5enough?5space?5for?5lo@ 0040522c LIBC:crt0msg.obj
0002:00000264 ??_C@_0DF@IBLNNAIG@R6026?$AN?6?9?5not?5enough?5space?5for?5st@ 00405264 LIBC:crt0msg.obj
0002:0000029c ??_C@_0CG@IOHKGFNJ@R6025?$AN?6?9?5pure?5virtual?5function?5c@ 0040529c LIBC:crt0msg.obj
0002:000002c4 ??_C@_0DF@JIJJFJDC@R6024?$AN?6?9?5not?5enough?5space?5for?5_o@ 004052c4 LIBC:crt0msg.obj
0002:000002fc ??_C@_0CJ@EGEJHFME@R6019?$AN?6?9?5unable?5to?5open?5console?5@ 004052fc LIBC:crt0msg.obj
0002:00000328 ??_C@_0CB@GNHNIELH@R6018?$AN?6?9?5unexpected?5heap?5error?$AN?6@ 00405328 LIBC:crt0msg.obj
0002:0000034c ??_C@_0CN@FOLDKNG@R6017?$AN?6?9?5unexpected?5multithread?5@ 0040534c LIBC:crt0msg.obj
0002:0000037c ??_C@_0CM@FAHFJNHO@R6016?$AN?6?9?5not?5enough?5space?5for?5th@ 0040537c LIBC:crt0msg.obj
0002:000003a8 ??_C@_0JG@LBKMGKLD@?$AN?6This?5application?5has?5requested@ 004053a8 LIBC:crt0msg.obj
0002:00000440 ??_C@_0CM@FLCNIPKK@R6009?$AN?6?9?5not?5enough?5space?5for?5en@ 00405440 LIBC:crt0msg.obj
0002:0000046c ??_C@_0CK@KMMJOAPP@R6008?$AN?6?9?5not?5enough?5space?5for?5ar@ 0040546c LIBC:crt0msg.obj
0002:00000498 ??_C@_0CF@HOHMHDEK@R6002?$AN?6?9?5floating?5point?5not?5load@ 00405498 LIBC:crt0msg.obj
0002:000004c0 ??_C@_0CF@GOGNBNAK@Microsoft?5Visual?5C?$CL?$CL?5Runtime?5Lib@ 004054c0 LIBC:crt0msg.obj
0002:000004e8 ??_C@_02PHMGELLB@?6?6?$AA@ 004054e8 LIBC:crt0msg.obj
0002:000004ec ??_C@_0BK@OFGJDLJJ@Runtime?5Error?$CB?6?6Program?3?5?$AA@ 004054ec LIBC:crt0msg.obj
0002:00000508 ??_C@_03KHICJKCI@?4?4?4?$AA@ 00405508 LIBC:crt0msg.obj
0002:0000050c ??_C@_0BH@DNAGHKFM@?$DMprogram?5name?5unknown?$DO?$AA@ 0040550c LIBC:crt0msg.obj
0002:00000544 ??_C@_0BI@DFKBFLJE@GetProcessWindowStation?$AA@ 00405544 LIBC:crtmbox.obj
0002:0000055c ??_C@_0BK@CIDNPOGP@GetUserObjectInformationA?$AA@ 0040555c LIBC:crtmbox.obj
0002:00000578 ??_C@_0BD@HHGDFDBJ@GetLastActivePopup?$AA@ 00405578 LIBC:crtmbox.obj
0002:0000058c ??_C@_0BA@HNOPNCHB@GetActiveWindow?$AA@ 0040558c LIBC:crtmbox.obj
0002:0000059c ??_C@_0M@CHKKJDAI@MessageBoxA?$AA@ 0040559c LIBC:crtmbox.obj
0002:000005a8 ??_C@_0L@GMPLCCII@user32?4dll?$AA@ 004055a8 LIBC:crtmbox.obj
0002:000005c4 ??_C@_09KLGCKDOD@Program?3?5?$AA@ 004055c4 LIBC:secfail.obj
0002:000005d0 ??_C@_0KA@JEHFIFGP@A?5buffer?5overrun?5has?5been?5detect@ 004055d0 LIBC:secfail.obj
0002:00000670 ??_C@_0BJ@MDEKIEOJ@Buffer?5overrun?5detected?$CB?$AA@ 00405670 LIBC:secfail.obj
0002:00000690 ??_C@_0LB@BPLHHLFD@A?5security?5error?5of?5unknown?5caus@ 00405690 LIBC:secfail.obj
0002:00000744 ??_C@_0CD@GMKACBEK@Unknown?5security?5failure?5detecte@ 00405744 LIBC:secfail.obj
0002:00000774 ??_C@_13NOLLCAOD@?$AA?$AA?$AA?$AA@ 00405774 LIBC:a_map.obj
0002:000007c0 ___newctype 004057c0 LIBC:ctype.obj
0002:00000ac0 __wctype 00405ac0 LIBC:ctype.obj
0002:00000cc8 __load_config_used 00405cc8 LIBC:loadcfg.obj
0002:00000d60 ___safe_se_handler_table 00405d60 <linker-defined>
0002:00000d68 ___rtc_iaa 00405d68 LIBC:initsect.obj
0002:00000d6c ___rtc_izz 00405d6c LIBC:initsect.obj
0002:00000d70 ___rtc_taa 00405d70 LIBC:initsect.obj
0002:00000d74 ___rtc_tzz 00405d74 LIBC:initsect.obj
0002:00000d78 __IMPORT_DESCRIPTOR_KERNEL32 00405d78 kernel32:KERNEL32.dll
0002:00000d8c __NULL_IMPORT_DESCRIPTOR 00405d8c kernel32:KERNEL32.dll
0003:00000000 ___xc_a 00407000 LIBC:crt0init.obj
0003:00000008 ___xc_z 00407008 LIBC:crt0init.obj
0003:0000000c ___xi_a 0040700c LIBC:crt0init.obj
0003:00000018 ___xi_z 00407018 LIBC:crt0init.obj
0003:0000001c ___xp_a 0040701c LIBC:crt0init.obj
0003:00000020 ___xp_z 00407020 LIBC:crt0init.obj
0003:00000024 ___xt_a 00407024 LIBC:crt0init.obj
0003:00000028 ___xt_z 00407028 LIBC:crt0init.obj
0003:00000030 __aexit_rtn 00407030 LIBC:crt0.obj
0003:00000034 ___app_type 00407034 LIBC:crt0.obj
0003:000000d0 __XcptActTab 004070d0 LIBC:winxfltr.obj
0003:00000148 __First_FPE_Indx 00407148 LIBC:winxfltr.obj
0003:0000014c __Num_FPE 0040714c LIBC:winxfltr.obj
0003:00000150 __XcptActTabCount 00407150 LIBC:winxfltr.obj
0003:00000154 __fpecode 00407154 LIBC:winxfltr.obj
0003:00000158 ___badioinfo 00407158 LIBC:ioinit.obj
0003:00000160 __amblksiz 00407160 LIBC:heapinit.obj
0003:00000170 ___security_cookie 00407170 LIBC:seccook.obj
0003:00000270 __NLG_Destination 00407270 LIBC:exsup.obj
0003:00000280 ___lc_clike 00407280 LIBC:nlsdata2.obj
0003:00000290 __pctype 00407290 LIBC:ctype.obj
0003:00000294 __pwctype 00407294 LIBC:ctype.obj
0003:00000298 ___mb_cur_max 00407298 LIBC:nlsdata1.obj
0003:0000029c ___decimal_point 0040729c LIBC:nlsdata1.obj
0003:000002a0 ___decimal_point_length 004072a0 LIBC:nlsdata1.obj
0003:000002c0 __aenvptr 004072c0 LIBC:crt0.obj
0003:000002c4 __wenvptr 004072c4 LIBC:crt0.obj
0003:000002c8 ___error_mode 004072c8 LIBC:crt0.obj
0003:000002cc _errno 004072cc LIBC:crt0dat.obj
0003:000002d0 __doserrno 004072d0 LIBC:crt0dat.obj
0003:000002d4 __umaskval 004072d4 LIBC:crt0dat.obj
0003:000002d8 __osplatform 004072d8 LIBC:crt0dat.obj
0003:000002dc __osver 004072dc LIBC:crt0dat.obj
0003:000002e0 __winver 004072e0 LIBC:crt0dat.obj
0003:000002e4 __winmajor 004072e4 LIBC:crt0dat.obj
0003:000002e8 __winminor 004072e8 LIBC:crt0dat.obj
0003:000002ec ___argc 004072ec LIBC:crt0dat.obj
0003:000002f0 ___argv 004072f0 LIBC:crt0dat.obj
0003:000002f4 ___wargv 004072f4 LIBC:crt0dat.obj
0003:000002f8 __environ 004072f8 LIBC:crt0dat.obj
0003:000002fc ___initenv 004072fc LIBC:crt0dat.obj
0003:00000300 __wenviron 00407300 LIBC:crt0dat.obj
0003:00000304 ___winitenv 00407304 LIBC:crt0dat.obj
0003:00000308 __pgmptr 00407308 LIBC:crt0dat.obj
0003:0000030c __wpgmptr 0040730c LIBC:crt0dat.obj
0003:00000310 __exitflag 00407310 LIBC:crt0dat.obj
0003:00000314 __C_Termination_Done 00407314 LIBC:crt0dat.obj
0003:00000318 __C_Exit_Done 00407318 LIBC:crt0dat.obj
0003:0000031c __adbgmsg 0040731c LIBC:crt0msg.obj
0003:00000320 __pxcptinfoptrs 00407320 LIBC:winxfltr.obj
0003:000004a0 ?_pnhHeap@@3P6AHI@ZA 004074a0 LIBC:handler.obj
0003:000004a4 __newmode 004074a4 LIBC:_newmode.obj
0003:000004a8 ___lc_handle 004074a8 LIBC:nlsdata2.obj
0003:000004c0 ___lc_codepage 004074c0 LIBC:nlsdata2.obj
0003:000004c4 ___lc_collate_cp 004074c4 LIBC:nlsdata2.obj
0003:000004d0 ___sbh_pHeaderDefer 004074d0 <common>
0003:000004d4 ___sbh_cntHeaderList 004074d4 <common>
0003:000004d8 ___sbh_pHeaderList 004074d8 <common>
0003:000004dc ___sbh_threshold 004074dc <common>
0003:000004e0 ___sbh_pHeaderScan 004074e0 <common>
0003:000004e4 ___sbh_sizeHeaderList 004074e4 <common>
0003:000004e8 ___sbh_indGroupDefer 004074e8 <common>
0003:000004ec ___mblcid 004074ec <common>
0003:000004f0 ___ismbcodepage 004074f0 <common>
0003:00000500 __mbctype 00407500 <common>
0003:00000604 ___mbcodepage 00407604 <common>
0003:00000610 ___mbulinfo 00407610 <common>
0003:00000620 __mbcasemap 00407620 <common>
0003:00000720 __crtheap 00407720 <common>
0003:00000724 ___active_heap 00407724 <common>
0003:00000728 __nhandle 00407728 <common>
0003:00000740 ___pioinfo 00407740 <common>
0003:00000840 ___env_initialized 00407840 <common>
0003:00000844 ___onexitend 00407844 <common>
0003:00000848 ___onexitbegin 00407848 <common>
0003:0000084c ___mbctype_initialized 0040784c <common>
0003:00000850 __FPinit 00407850 <common>
0003:00000854 __acmdln 00407854 <common>

entry point at 0001:00000028

Static symbols

0001:00000289 _doexit 00401289 f LIBC:crt0dat.obj
0001:00000772 _parse_cmdline 00401772 f LIBC:stdargv.obj
0001:00000e95 $$$00003 00401e95 f LIBC:exsup3.obj
0001:0000135b _report_failure 0040235b f LIBC:secchk.obj
0001:00001456 _CPtoLCID 00402456 f LIBC:mbctype.obj
0001:00001485 _setSBCS 00402485 f LIBC:mbctype.obj
0001:000014ae _setSBUpLow 004024ae f LIBC:mbctype.obj
0001:000026a0 $$$00001 004036a0 f LIBC:exsup.obj
0001:000026c0 __unwind_handler 004036c0 f LIBC:exsup.obj
0001:000026c0 $$$00003 004036c0 f LIBC:exsup.obj
0001:000026e2 $$$00005 004036e2 f LIBC:exsup.obj
0001:0000274a $$$00007 0040374a f LIBC:exsup.obj
0001:0000278e $$$00011 0040378e f LIBC:exsup.obj
... << RSDN@Home 1.1.0 stable >>
В XXI век с CCore.
Копай Нео, копай -- летать научишься. © Matrix. Парадоксы
Re[3]: А нужен ли нам CRT?
От: Аноним  
Дата: 29.01.04 20:36
Оценка:
Здравствуйте, _nn_, Вы писали:

__>Было бы неплохо если бы CRT ,которая идет в студии, состояла из нескольких частей :

__>например математические функции, работа со строками , работа с плавающей запятой и т.д.
Маленькое уточнение — операций с плавающей запятой нет, есть операции с плавающей точкой.
__>Т.е. в программы можно было бы добавить ту часть которая нужна , а не тащить все, из которого половина не используется.

Если бы вы хоть раз дали себе труд скормить только что собранную в VC програму дебагеру, а лучше всего декомпилятору типа IDA, то знали бы, что код поддержки времени исполнения не реализует матиматику, или строковые функции, а только подготавливает все необходимое для того чтобы библиотечные функции могли были быть вызваны.
То что выполняется от програм ентри поинт и до функции winMain, плюс то что выполняется после winMain и до операции возврата из программы и есть собственно CRT.
Re[4]: А нужен ли нам CRT?
От: _nn_ www.nemerleweb.com
Дата: 30.01.04 11:02
Оценка:
Здравствуйте, Аноним, Вы писали:

<skip>

В таком случае вывод напрашивается переписать CRT для себя , или использовать то что есть....
http://rsdn.nemerleweb.com
http://nemerleweb.com
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.