компиляция — разница между Turbo C ++ и Borland C ++ компилятором

Я скомпилировал два кода, используя компиляторы Turbo C ++ 3.0 и Borland C ++ 5.02, и натолкнулся на некоторые странные вещи, подобные моим кодам:

Первый Код

void main()
{
}

Второй код

#include<iostream.h>
#include<conio.h>
void main()
{
}

и я получил эти результаты от них:
— Borland C ++ (Первый код): 51 КБ
— Borland C ++ (второй код): 51 КБ
— Turbo C ++ (Первый код): 5,89 КБ
— Turbo C ++ (Первый код): 16,3 КБ
Я проверил два исполняемых файла Borland с помощью шестнадцатеричной программы просмотра и понял, что они абсолютно одинаковы.
Я проверил первый код формы этих компиляторов в IDA pro и наткнуться на эти графики:

Turbo C ++
TurboC ++

Borland C ++
borlandC ++

Теперь у меня есть вопрос, на который я бы хотел, чтобы вы ответили
1-Почему скомпилированные файлы Borland C ++ одинаковы, когда у одного из них явно нет включения, а у другого?
2-Почему скомпилированные файлы Boland C ++ такие большие? (почти в 10 раз больше) и что компилируется с таким большим размером?
3-Когда я отправляю первый код этот сайт я вижу код сборки простой основной функции void, и я понял, что код Borland C ++ очень похож, но код сборки Turbo C ++ очень сложен и не тот, почему?
4-Почему этот простой код, скомпилированный с Turbo C ++, создает столько функций, которые вы можете увидеть на его графике?

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

-1

Решение

Я сделаю все возможное, чтобы ответить на них, но вам, возможно, придется публиковать свои вопросы на форумах Borland для подробных ответов. В любом случае, обновите ваши компиляторы.

1-Почему скомпилированные файлы Borland C ++ одинаковы, когда у одного из них явно нет включения, а у другого?

Ваша программа не работает и работает некорректно. (The main функция возвращает intвсегда.)

Вы можете включить все заголовочные файлы, которые вы хотите. Вы не используете их, поэтому дополнительный код не генерируется.

Ваша программа не требует никаких заголовочных файлов. Имеют одинаковую функциональность.

2-Почему скомпилированные файлы Boland C ++ такие большие? (почти в 10 раз больше) и что компилируется с таким большим размером?

Есть много возможностей. Вам нужно будет либо просмотреть сгенерированный код сборки, сгенерированный машинный код, либо опубликовать его на форумах Borland.

Это также зависит от того, скомпилированы ли вы в режиме отладки или в режиме выпуска. Это также зависит от того, скомпилированы ли вы для статических или динамических библиотек.

По сути, Borland Compiler может генерировать код, который соответствует стандартам, требуемым в более поздних версиях Windows, чем для поддержки Turbo C ++. Исследуйте разницу между форматами «.com» и «.exe».

3-Когда я отправляю First Code на этот сайт, я вижу код сборки простой основной функции void, и я понял, что код Borland C ++ очень похож, но код сборки Turbo C ++ очень сложен и не тот, почему ?

Смотрите мой ответ на # 2.

4-Почему этот простой код, скомпилированный с Turbo C ++, создает столько функций, которые вы можете увидеть на его графике?

Скорее всего, потому что вы компилируете в режиме отладки; или потому что Turbo C ++ является более простым компилятором, он не оптимизирует библиотеки и код так сильно, как Borland. В режиме отладки в исполняемый файл помещается символическая информация.

Кстати, размер исполняемого файла может не соответствовать размеру исполняемого кода, помещенного в память. Формат исполняемого файла позволяет помещать в файл материал, отличный от исполняемого кода, такой как символы программы и номера строк.

Не беспокойтесь о размерах программы больше. Получите программу, работающую правильно, надежно и безопасно, прежде чем оптимизировать ее по размеру.

1

Другие решения


По вопросам рекламы [email protected]