
![]() |
Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
|
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[216.73.216.188] |
![]() |
|
Страницы: (117) « Первая ... 91 92 [93] 94 95 ... 116 117 ( Перейти к последнему сообщению ) |
Сообщ.
#1381
,
|
|
|
Цитата пока добилась 2 килобайт ну, всё ещё впереди. кодогенерация, правда, по скорости не ахти у lcc. числодробилки ей лучше не кормить. другое дело - задачи, в которых "выше winapi не прыгнешь", как раз это её ниша (обычно там и crtl не сильно требуется, скажем, утилитка для запуска/остановки сервисов). |
Сообщ.
#1382
,
|
|
|
Цитата archimed7592 @ В Си заполняется нулями... В С++ - зависит от прихотей конструктора. Я имею ввиду именно крупные области памяти(массивы, к примеру). Переменные примитивных типов или мелкие аггрегаты, конечно, можно явно инициализировать значениями. Бобёр, Архимед, добро пожаловать в Задачка проголосовать. |
Сообщ.
#1383
,
|
|
|
Цитата скажем, утилитка для запуска/остановки сервисов (хотя та же утилитка на каком нить vb.net решается на порядок быстрее) Цитата Бобёр, Архимед, добро пожаловать в Задачка проголосовать. я так подозреваю, это нихрена не специфицировано ![]() голосонул "на выбор комбилятора" |
![]() |
Сообщ.
#1384
,
|
|
Действительно, интересно. "Eliminate Unreferenced Code" там нету? Не нашёл. Не могу сказать, что сборщики "поумнели", но результат налицо. Интересно было бы узнать, повсеместное ли это явление и с каких пор? А также не найдётся ли у кого ссылок на описание формата объектных файлов? |
Сообщ.
#1385
,
|
|
|
Цитата wind @ А также не найдётся ли у кого ссылок на описание формата объектных файлов? точно не помню, но обьектный файл он же .obj содержит неупорядоченный набор команд, который потом преобразуется в функциональный модуль, там много тонкостей. А кто-нибудь знает, ФАСМ всё таки генерит их ? Ну а вообще, строго не судите, я давно это читала ![]() Добавлено wind, правда, если вы сьерьёзно спросили ![]() |
![]() |
Сообщ.
#1386
,
|
|
Цитата Катька @ точно не помню, но обьектный файл он же .obj содержит неупорядоченный набор команд, который потом преобразуется в функциональный модуль, там много тонкостей. Мне было бы интересно подробное описание всех версий формата. Что именно там находится - известно и так ![]() |
Сообщ.
#1387
,
|
|
|
Цитата wind @ Мне было бы интересно подробное описание всех версий формата. каких ещё версий ? Вот кусочек но вполне тянет на описание и определение Цитата ПОДГОТОВКА ПРОГРАММЫ ДЛЯ ВЫПОЛНЕНИЯ ________________________________________________________________ После ввода на диск исходной программы под именем EXASM1.ASM необходимо проделать два основных шага, прежде чем программу можно будет выполнить. Сначала необходимо ассемблиpовать программу, а затем выполнить компоновку. Программисты на языке бейсик могут выполнить программу сразу после ввода исходного текста, в то время как для ассемблера и компилярных языков нужны шаги трансляции и компоновки. Шаг ассемблирования включает в себя трансляцию исходного кода в машинный объектный код и генерацию OBJ-модуля. Вы уже встречали примеры машинного кода в гл.2 и примеры исxодного текста в этой главе. OBJ-модуль уже более приближен к исполнительной форме, но еще не готов к выполнению. Шаг компановки включает преобразование OBJ-модуля в EXE (исполнимый) модуль, содержащий машинный код. Программа LINK, находящаяся на диске DOS, выполняет следующее: 1. Завершает формирование в OBJ-модуле адресов, которые остались неопределенными после ассемблирования. Во многих следующих программах такие адреса ассемблер отмечает как ----R. 2. Компонует, если необходимо, более одного отдельно ассемблированного модуля в одну загрузочную (выполнимую) программу; возможно две или более ассемблерных программ или ассемблерную программу с программами, написанными на языках высокого уровня, таких как Паскаль или Бейсик. 3. Инициализирует EXE-модуль командами загрузки для выполнения. Добавлено Цитата OBJ содержит только машинный код в шестнадцатеричной форме. Так как программа может загружаться почти в любое место памяти для выполнения, то ассемблер может не определить все машинные адреса. Кроме того, могут использоваться другие (под) программы для объединения с основной. Назначением программы LINK является завершение определения адресных ссылок и объединение (если требуется) нескольких программ. Добавлено Цитата Катька @ Назначением программы LINK является завершение определения адресных ссылок и объединение а да, - вот вспомнила, что команды находятся в расброс в обьектнике. А потом они структурируются и дают в совокупности исполняемый модуль ![]() |
Сообщ.
#1388
,
|
|
|
Цитата Бобёр @ Именно обнуляется. Согласно стандарта, все явно неинициированные переменные заполняются нулями. А потому, можно не отводить для них память в бинарнике, а выделить ее при старте программы и заполнить нулями. Ты видимо спутал с кучей. Там по стандарту ничего не делается. Она не обнуляется (по крайней мере, в release версиях, в debug - иногда). Только выделяется. Добавлено Дополнительно, обнуляются все статические переменные не инициируемые статически (в стиле С), думаю переменные классов тоже, чтобы не обрабатывать их отдельно. Потом вызываются конструкторы, которые эту "обнуленную" память заполняют более осмысленными значениями. В некоторых системах и память, впервые выделяемая по malloc, тоже обнулена, в целях безопасности, чтобы уничтожить следы данных ранее размещенных в этих областях программ. |
Сообщ.
#1389
,
|
|
|
Сравнение по части функций из внешних библиотек.
В Delphi очень легко и просто импортировать функции из внешних DLL, а в C++ надо изврашаться с LIB файлами. На Delphi написать DLL также легко как и обычную программу. Это сообщение было перенесено сюда или объединено из темы "Сравнение Delphi & C++" |
Сообщ.
#1390
,
|
|
|
Не надо там ни с чем извращаться.
Это сообщение было перенесено сюда или объединено из темы "Сравнение Delphi & C++" |
Сообщ.
#1391
,
|
|
|
Цитата Ahilles @ В Delphi очень легко и просто импортировать функции из внешних DLL, а в C++ надо изврашаться с LIB файлами. На Delphi написать DLL также легко как и обычную программу. Учим матчасть? ![]() Это сообщение было перенесено сюда или объединено из темы "Сравнение Delphi & C++" |
Сообщ.
#1392
,
|
|
|
Цитата Flex Ferrum @ Учим матчасть? конечно учим. в С++ нет же такого аналога: function GetCurrentProcess: THandle; stdcall; external kernel32 name 'GetCurrentProcess'; Это сообщение было перенесено сюда или объединено из темы "Сравнение Delphi & C++" |
Сообщ.
#1393
,
|
|
|
Цитата Ahilles @ А зачем? Во-первых, в C/C++ процесс линковки отвязан от компиляции, а во-вторых, это у Delphi проблема - практически все библиотеки исходно написаны на C/C++.конечно учим. в С++ нет же такого аналога: Это сообщение было перенесено сюда или объединено из темы "Сравнение Delphi & C++" |
Сообщ.
#1394
,
|
|
|
Цитата trainer @ а это проблема? ...а во-вторых, это у Delphi проблема - практически все библиотеки исходно написаны на C/C++. ![]() Это сообщение было перенесено сюда или объединено из темы "Сравнение Delphi & C++" |
Сообщ.
#1395
,
|
|
|
Цитата e-moe @ Ну мне почему-то кажется, что собрать из исходников на C/C++ библиотеку в Delphi мягко говоря непросто. а это проблема? ![]() P.S. Речь о крупных библиотеках обработки данных. P.P.S. SDK практически всех ОС аналогично предоставляются в заголовочных файлах и библиотеках для C/C++-компиляторов. Это сообщение было перенесено сюда или объединено из темы "Сравнение Delphi & C++" |