На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! Правила раздела:
1. Название темы - краткое описание кто/что против кого/чего
2. В первом сообщении - список параметров, по которым идет сравнение.
3. Старайтесь аргументировать свои высказывания. Фразы типа "Венда/Слюникс - ацтой" считаются флудом.
4. Давайте жить дружно и не доводить обсуждение до маразма и личных оскорблений.
Модераторы: Модераторы, Комодераторы
Закрыто archimed7592 11-03-2008: Лимит страниц. Продолжаем Delphi vs C++

Страницы: (117) « Первая ... 91 92 [93] 94 95 ...  116 117  ( Перейти к последнему сообщению )  
> Delphi vs C++ , Часть 1
    Цитата
    пока добилась 2 килобайт

    ну, всё ещё впереди.
    кодогенерация, правда, по скорости не ахти у lcc. числодробилки ей лучше не кормить. другое дело - задачи, в которых "выше winapi не прыгнешь", как раз это её ниша (обычно там и crtl не сильно требуется, скажем, утилитка для запуска/остановки сервисов).
      Цитата archimed7592 @
      В Си заполняется нулями... В С++ - зависит от прихотей конструктора. Я имею ввиду именно крупные области памяти(массивы, к примеру). Переменные примитивных типов или мелкие аггрегаты, конечно, можно явно инициализировать значениями.

      Бобёр, Архимед, добро пожаловать в Задачка проголосовать.
        Цитата
        скажем, утилитка для запуска/остановки сервисов

        (хотя та же утилитка на каком нить vb.net решается на порядок быстрее)

        Цитата
        Бобёр, Архимед, добро пожаловать в Задачка проголосовать.

        я так подозреваю, это нихрена не специфицировано :)
        голосонул "на выбор комбилятора"
          Цитата LuckLess @
          Ухты.
          интересно чтоже такое "Eliminate Unreferenced Data" у моего линкеера..

          Действительно, интересно. "Eliminate Unreferenced Code" там нету?

          Цитата trainer @
          ищи

          Не нашёл. Не могу сказать, что сборщики "поумнели", но результат налицо. Интересно было бы узнать, повсеместное ли это явление и с каких пор? А также не найдётся ли у кого ссылок на описание формата объектных файлов?
            Цитата wind @
            А также не найдётся ли у кого ссылок на описание формата объектных файлов?

            точно не помню, но обьектный файл он же .obj содержит неупорядоченный набор команд, который потом преобразуется в функциональный модуль, там много тонкостей. А кто-нибудь знает, ФАСМ всё таки генерит их ? Ну а вообще, строго не судите, я давно это читала :)

            Добавлено
            wind, правда, если вы сьерьёзно спросили :)
              Цитата Катька @
              точно не помню, но обьектный файл он же .obj содержит неупорядоченный набор команд, который потом преобразуется в функциональный модуль, там много тонкостей.

              Мне было бы интересно подробное описание всех версий формата. Что именно там находится - известно и так :)
                Цитата wind @
                Мне было бы интересно подробное описание всех версий формата.

                каких ещё версий ? Вот кусочек но вполне тянет на описание и определение
                Цитата
                ПОДГОТОВКА ПРОГРАММЫ ДЛЯ ВЫПОЛНЕНИЯ
                ________________________________________________________________

                После ввода на диск исходной программы под именем EXASM1.ASM
                необходимо проделать два основных шага, прежде чем программу можно будет
                выполнить. Сначала необходимо ассемблиpовать программу, а затем выполнить
                компоновку. Программисты на языке бейсик могут выполнить программу сразу
                после ввода исходного текста, в то время как для ассемблера и компилярных
                языков нужны шаги трансляции и компоновки.
                Шаг ассемблирования включает в себя трансляцию исходного кода в
                машинный объектный код и генерацию OBJ-модуля. Вы уже встречали примеры
                машинного кода в гл.2 и примеры исxодного текста в этой главе.
                OBJ-модуль уже более приближен к исполнительной форме, но еще не
                готов к выполнению. Шаг компановки включает преобразование OBJ-модуля в
                EXE (исполнимый) модуль, содержащий машинный код. Программа LINK,
                находящаяся на диске DOS, выполняет следующее:

                1. Завершает формирование в OBJ-модуле адресов, которые остались
                неопределенными после ассемблирования. Во многих следующих программах
                такие адреса ассемблер отмечает как ----R.
                2. Компонует, если необходимо, более одного отдельно
                ассемблированного модуля в одну загрузочную (выполнимую) программу;
                возможно две или более ассемблерных программ или ассемблерную
                программу с программами, написанными на языках высокого уровня, таких
                как Паскаль или Бейсик.
                3. Инициализирует EXE-модуль командами загрузки для выполнения.



                Добавлено
                Цитата
                OBJ содержит только
                машинный код в шестнадцатеричной форме. Так как программа может
                загружаться почти в любое место памяти для выполнения, то ассемблер может
                не определить все машинные адреса. Кроме того, могут использоваться другие
                (под) программы для объединения с основной. Назначением программы LINK
                является завершение определения адресных ссылок и объединение (если
                требуется) нескольких программ.


                Добавлено
                Цитата Катька @
                Назначением программы LINK
                является завершение определения адресных ссылок и объединение

                а да, - вот вспомнила, что команды находятся в расброс в обьектнике. А потом они структурируются и дают в совокупности исполняемый модуль ;)
                Сообщение отредактировано: Катька -
                  Цитата Бобёр @
                  Она не обнуляется (по крайней мере, в release версиях, в debug - иногда). Только выделяется.
                  Именно обнуляется. Согласно стандарта, все явно неинициированные переменные заполняются нулями. А потому, можно не отводить для них память в бинарнике, а выделить ее при старте программы и заполнить нулями. Ты видимо спутал с кучей. Там по стандарту ничего не делается.

                  Добавлено
                  Дополнительно, обнуляются все статические переменные не инициируемые статически (в стиле С), думаю переменные классов тоже, чтобы не обрабатывать их отдельно. Потом вызываются конструкторы, которые эту "обнуленную" память заполняют более осмысленными значениями. В некоторых системах и память, впервые выделяемая по malloc, тоже обнулена, в целях безопасности, чтобы уничтожить следы данных ранее размещенных в этих областях программ.
                    Сравнение по части функций из внешних библиотек.
                    В Delphi очень легко и просто импортировать функции из внешних DLL, а в C++ надо изврашаться с LIB файлами. На Delphi написать DLL также легко как и обычную программу.

                    Это сообщение было перенесено сюда или объединено из темы "Сравнение Delphi & C++"
                      Не надо там ни с чем извращаться.

                      Это сообщение было перенесено сюда или объединено из темы "Сравнение Delphi & C++"
                        Цитата Ahilles @
                        В Delphi очень легко и просто импортировать функции из внешних DLL, а в C++ надо изврашаться с LIB файлами. На Delphi написать DLL также легко как и обычную программу.

                        Учим матчасть? :whistle:

                        Это сообщение было перенесено сюда или объединено из темы "Сравнение Delphi & C++"
                          Цитата Flex Ferrum @
                          Учим матчасть?

                          конечно учим. в С++ нет же такого аналога:

                          function GetCurrentProcess: THandle; stdcall; external kernel32 name 'GetCurrentProcess';

                          Это сообщение было перенесено сюда или объединено из темы "Сравнение Delphi & C++"
                            Цитата Ahilles @
                            конечно учим. в С++ нет же такого аналога:
                            А зачем? Во-первых, в C/C++ процесс линковки отвязан от компиляции, а во-вторых, это у Delphi проблема - практически все библиотеки исходно написаны на C/C++.

                            Это сообщение было перенесено сюда или объединено из темы "Сравнение Delphi & C++"
                              Цитата trainer @
                              ...а во-вторых, это у Delphi проблема - практически все библиотеки исходно написаны на C/C++.
                              а это проблема? :blink:

                              Это сообщение было перенесено сюда или объединено из темы "Сравнение Delphi & C++"
                              Сообщение отредактировано: e-moe -
                                Цитата e-moe @
                                а это проблема?
                                Ну мне почему-то кажется, что собрать из исходников на C/C++ библиотеку в Delphi мягко говоря непросто. :)

                                P.S. Речь о крупных библиотеках обработки данных.

                                P.P.S. SDK практически всех ОС аналогично предоставляются в заголовочных файлах и библиотеках для C/C++-компиляторов.

                                Это сообщение было перенесено сюда или объединено из темы "Сравнение Delphi & C++"
                                0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                                0 пользователей:
                                Страницы: (117) « Первая ... 91 92 [93] 94 95 ...  116 117
                                Закрыто archimed7592 11-03-2008: Лимит страниц. Продолжаем Delphi vs C++



                                Рейтинг@Mail.ru
                                [ Script execution time: 0,1052 ]   [ 15 queries used ]   [ Generated: 27.07.25, 07:18 GMT ]