После компоновки программа на машинном языке сохраняется на диске в виде

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

  • Компилировать
    предварительно обработает сгенерированные файлы и передастЛексический анализ, грамматический анализ, семантический анализ и оптимизацияПосле компиляции в несколько целевых модулей. Его можно понимать как машинный язык, который переводит язык высокого уровня в двоичный код. Он компилируется в файл .obj под Windows и в файл .o под Linux.
  • ссылка на сайт
    Компоновщик связывает скомпилированный набор целевых модулей и библиотечные функции, необходимые им для формирования полной модели загрузки.Ссылки в основном решают проблему взаимных ссылок, Разделен наРаспределение адресов и пространства, разрешение символов и перемещениеНесколько шагов. Когда объектный файл создается на этапе компиляции, эти внешние ссылки временно приостанавливаются, и эти внешние ссылки определяются во время компоновки. При связывании компоновщик найдет соответствующий символ в соответствующем модуле по имени символа. После определения символа компоновщик перезапишет ранее неопределенный адрес символа.Этот процесс называется перемещением. Ссылки обычно делятся на три типа: статическое связывание, динамическое связывание во время загрузки и динамическое связывание во время выполнения.
  • Загрузка
    Программа загрузки загружает модуль загрузки в память.

Видео #2. Принцип хранения информации на жестком диске

Компиляция и компоновка служат для переноса пользовательских программ с жесткого диска в память и преобразования их в исполняемые программы. При компиляции компилятору нужен правильный синтаксис и правильное объявление функций и переменных. Вообще говоря, каждый исходный файл должен соответствовать промежуточному целевому файлу. При связывании в основном используются функции связывания и глобальные переменные, поэтому эти промежуточные объектные файлы могут использоваться для связывания приложений. Связывание — это функция и глобальная переменная, которые целевой файл должен связывать друг с другом, и функция может происходить из других целевых файлов или файлов библиотеки.

2. В чем разница между компилируемым языком и интерпретируемым языком?

  • Скомпилированный язык
    Скомпилированный язык означает, что перед выполнением исходной программы приложения исходный код программы «транслируется» в целевой код («машинный язык») и сохраняется в другом файле, поэтому целевая программа можно разделить Языковая среда выполняется независимо много раз, что удобнее и эффективнее. Однако, как только приложение необходимо изменить, сначала необходимо изменить исходный код.Если в целевом файле нет исходного кода, изменение очень затруднено. Большинство программных продуктов выпускается для пользователей в виде целевых программ, которые могут не только запускаться напрямую, но и затруднять кражу технологии другими. C / C ++ / Fortran / Visual Foxpro / Psacal / Delphi — все это скомпилированные языки.
  • Интерпретируемый язык
    Интерпретируемые языки существуют относительно скомпилированных языков. Исходный код не транслируется напрямую на машинный язык, а сначала транслируется в промежуточный код, а затем промежуточный код интерпретируется и запускается интерпретатором. . Задача интерпретатора состоит в том, чтобы интерпретировать операторы исходной программы в исполняемые машинные инструкции один за другим. Его не нужно компилировать и связывать в объектный код перед выполнением. Когда оператор имеет синтаксическую ошибку, интерпретатор может немедленно нарисовать внимание программиста Исправление на этапе разработки. Каждый оператор транслируется только при его выполнении, а интерпретатор переводится один раз при каждом его выполнении, поэтому он неэффективен и зависит от интерпретатора, но является кроссплатформенным. Python / JavaScript / Perl / Shell и т. Д. Являются интерпретируемыми языками.
Читайте также:
Программа которая считает калории для Андроид

Этапы компиляции на Си: предобработка, трансляция, компоновка

Java — это особый вид языка программирования, и его программа также должна быть скомпилирована, но она не компилируется напрямую, называемая машинным языком, а компилируется в байт-код, а затем байт-код выполняется интерпретируемым образом на виртуальной машине Java.

3. Как определить, на C или на C ++ скомпилирована программа?

Если компилятор компилирует файл cpp, то пользовательский макрос _cpluslus Будет определено, если файл c скомпилирован, то _STDC_ Будет определено. _STDC_ Это предопределенный макрос.Когда он определен, компилятор скомпилирует программу на языке C в соответствии со стандартом ANSIC.

C и C ++ компилируются по-разному. Для написания кода, совместимого с C / C ++, требуется следующий формат:

#ifdef _cplusplus extern «C»< #endif //code #ifdef _cplusplus >; #endif

4. Какова роль внешнего «C»?

C ++ — это объектно-ориентированный язык, поддерживающий перегрузку функций, а язык C — это процедурный язык, который не поддерживает перегрузку функций, поэтому имя функции в библиотеке после компиляции с помощью C ++ отличается от имени языка C. Если вы объявите float f(int a, char b) , В языке C обычно используются похожие _f Внутреннее имя, и C ++ связывает в нем параметры, внутреннее имя аналогично _f_int_char . Следовательно, компоновщик не может интерпретировать вызов программы C ++ функции языка C f.

C ++ предоставляет язык C для замены символа описания соединения extern «C» Чтобы решить проблему сопоставления имен, этот оператор используется перед функцией: extern «C» float f(int a, char b) , Его цель — сообщить компилятору f() Он связан через C, нет необходимости преобразовывать имя функции в способ C ++, чтобы его можно было правильно связать с f() Функция сейчас.

Источник: russianblogs.com

3. Сохранение текста программы в файле на диске.

  • выполните команду меню FileSaveas.
  • в диалоговом окне введите полное имя файла, например, D:prim1p(расширение.pasприсваивается по умолчанию)
  • сделайте щелчок на кн. ОКили нажмитекл.Enter.

После закрытия диалогового окна имя файла появится в заголовке окна документа. Вид окна программы с сохраненным текстом программы представлен на рис.3. Рис.3. Окно системы ТРWвместе с сохраненным текстом программы Варианта1.

4. Компиляция и компоновка программы.

Назначение компилятора: 1) проверка текста программы на наличие синтаксических ошибок; 2) в случае отсутствия ошибок перевод исходного текста программы с языка Pascal на язык машинных кодов, т.е. создание объектного кода программы. Назначение компоновщика: 1) подключение к объектному коду программы объектных кодов внешних программных модулей (библиотек процедур и функций); 2) создание загрузочного кода программы (имя файла с расширением exe). Задание 4. Откомпилируйте программуPrim1p. Для этого:

  • установите текущий каталог D:, чтобы загрузочный файл сохранился там же, где находится исходный файл, для этого:
  • выполните команду меню OptionsDirectories…
  • в поле EXEandTPUDirectoriesвведите с клавиатурыD:
  • выполните команду меню CompileCompile или нажмите клавишиAlt+F9
  • ( если в программе имеются ошибки, то строка с первой ошибкой закрашивается черным цветом, место ошибки отмечается курсором, сообщение об ошибке появляется в статусной строке окна программы);

    • исправьте ошибки и повторите компиляцию и так до тех пор, пока не появится диалоговое окно с сообщением Successfullycompleted (компиляция завершена):
    • сохраните исправленный текст программы (команда меню FileSave).
    Читайте также:
    На какой программе делать йогурт в мультиварке

    Замечание. КомандаCompile выполняет две функции – компилятора и компоновщика. В результате сформируется программный файл (в нашем случаеPrim1p.exe).

    • проверьте местонахождение загрузочного файла.

    4. Выполнение программы.

    Задание5. Выполните программуPrim1p. Для этого:

    • выполните команду меню RunRun или нажмите клавишиCtrl+F9 (появится окно с результатами выполнения, см. рис.4.).
    • запишите результат и закройте окно выполнения.

    Рис.4. Результат выполнения программы Варианта1.

    7. Создание и выполнение новой версии программы.

    Задание6. Создайте и выполните программу Варианта2. Для этого:

    • создайте новое окнодокумента в окне ТРW(команда менюFileNew);
    • скопируйте текст программы Prim1p.pasв новое окно, для этого:

    — активизируйте окно с файлом Prim1p.pas(кл.F6) — выделите весь текст и скопируйте его в Буфер обмена (команда EditCopy) — активизируйте новое окно (кл.F6) — вставьте текст из Буфера обмена (команда EditPaste)

    • в новом окне измените текст программы в соответствии с Вариантом2
    • сохраните текст программы в своей папке в файле с именем Prim2p.pas( команда менюFileSave as…) (см. рис.5 )

    Рис.5. Окно системы ТРWвместе с сохраненным текстом программы Варианта2.

    • откомпилируйте программу Prim2pдо успешного завершения;
    • зафиксируйте правильный текст программы (команда FileSave);
    • выполните программу Prim2p(командаRunRunили клавишиCtrl+F9). Автоматически появитсяокно выполнения программыс приглашением к вводу значения радиуса круга (рис.6.);

    Рис.6. Окно выполнения с приглашением ввода радиуса

    • в ответ на это приглашение наберите с клавиатуры число 1.5и нажмитекл.Enter(в окне выполнения появится результат, см. рис.7);
    • запишите результат в тетрадь;
    • для продолжения работы закройте окно выполнения.

    Рис.7. Окно выполнения с результатами работы программы Варианта2. Задание7. Закройте все окна на рабочем столе.Задание8. Откройте программу Проводник и свою папку. Убедитесь в наличие исходных и программных файлов для каждого варианта.Задание9. Из окна Проводника запустите программный файл для Варианта1, затем для Варианта2. (Обратите внимание, что каждая программа выполняется в отдельном окне). Не закрывайте окна!Задание10. Запустите системуTurboРascalи откройте исходные файлы для Варианта1, затем для Варианта2 (команда менюFileOpen).Задание11. В окнеTurboРascalрасположите окна мозаикой (командаWindowTyle).Задание13. На Рабочем столе расположите каскадом все открытые окна.Предъявите результаты работы преподавателю – окно Проводника, окно ТРW, два окна выполнения программ.Часть2. Программирование в системеMSVISUAL C++6.0Структура программы на языке С++

                    1. Программа на языке С++ состоит из директив препроцессора, описания глобальных объектов, функций написанных программистом и функции main() :

                    директивы препроцессора описания глобальных объектов функции, написанные программистом voidmain()операторы функции main >Директивы препроцессоравключают в себя необходимые заголовочные файлы библиотек С++, определения констант, типов и макроопределений, используемых в программе. Глобальные объекты– константы, типы, переменные используются во всех функциях программы, обеспечивая соответствие типов, значений констант и переменных во всей программе. Функции– это особым образом оформленные части программы, которая выполняют действия необходимые программисту. Функция main()- главная функция программы. Любая программа на С++ обязательно включает в себя функцию main(), с которой и начинает свое выполнение. Функция main() запускается операционной системой. Слово void перед именем функции main() означает, что функция main() не возвращает операционной системе никакой информации. Тело функциизаключено в фигурные скобки ‘ ’ . Фигурные скобки ‘ < >’ обозначают начало и конец составного оператора (аналогичноbeginиendвTurboPascal). Точка с запятой ‘ ; ‘ завершает каждый оператор и каждое описание. Программа может содержать комментарии, их можно вставлять в любое место программы, где допускаются пробелы или в конце строки. В С++ используются два вида комментариев: /* многострочный комментарий */ // однострочный комментарий до конца текущей строки Примеры программ на языке С++ Рассмотрим два примера программ соответственно двум вариантам схемы алгоритма (рис. 1). Пример 1.Программа вычисления площади круга (по схеме алгоритма Варианта1) ( значение радиуса задается оператором присваивания) /* Вариант1: Вычисление площади круга */ #include //директива препроцессора для подключения стандартной библиотеки // ввода — вывода voidmain()// заголовок функцииmain() constfloatPi=3.14; // определение вещественной константыPiравной 3.14 floatR,S; // оператор описания вещественных переменныхRиS R=1.5; // оператор присваивания переменнойRзначения 1.5 S=Pi*R*R; // оператор присваиванияSвычисленного значения printf(“S=%fn”,S); // оператор вывода на экран значенияS >Пояснения к программе

                    1. Первая строка – комментарий, который заключается в символы: /* комментарий */
                    Читайте также:
                    Для чего нужна программа nvidia physx

                    Комментарии могут располагаться как вне, так и внутри программ. В комментариях разрешается указывать все символы клавиатуры.

                    1. Следующая директива препроцессора #include подключает к программе стандартную библиотеку ввода-вывода. Директивы препроцессора располагаются строго на одной строке и начинаются с символа ‘#’.
                    1. Далее идет заголовок функции main(): отсутствие параметров в круглых скобках означает, что функция main() не возвращает никаких значений операционной системе и не получает от нее никакой информации. В теле функции внутри фигурных скобок:
                    1. Объявление и задание константы Pi .
                    2. Оператор описаний — float R,S резервирует ячейки оперативной памяти под переменные – R (радиус круга) и S (площадь круга).
                    3. Два оператора присваивания:

                    — задание переменной Rзначения 1.5; — вычисление площади круга S(операция присваивания имеет вид “=”).

                      1. Оператор вывода значения Sи соответствующих пояснений на экран

                      printf(“S=%fn”,S); Для вывода действительной переменной Sуказывается форматная спецификация — %f- соответствующая выводу вещественного значения с фиксированной точкой. Управляющий символ ‘n’ используется для перевода курсора на начало следующей строки экрана. Пример 2.Программа вычисления площади круга (по схеме алгоритма Варианта2) ( ввод значения радиуса с клавиатуры) /* Вариант2: Вычисление площади круга */ #include void main() const float Pi=3.14; float R,S; printf(“R= “); //оператор вывода текста приглашения к вводу значения радиуса scanf(%f”. // оператор ввода с клавиатуры значения переменнойR S=Pi*R*R; printf(“S=%fn”,S); >Пояснения к программе: 1. Эта программа отличается от предыдущей только тем, что значение радиуса Rвводится с клавиатуры, а не присваивается в операторе присваивания. Операторыprintfиscanfиспользуются для организации диалога пользователя с компьютером: — оператор printf(“R= “)выводит на экран текст:R= — оператор scanf(“%f”, (амперсанд) используется для того, чтобы введенное значение было записано по адресу переменнойR. 2. Все остальные части программы работают так же, как и в предыдущей программе. Реализация программы в системеMicrosoftVISUALC++6.0 CистемаMicrosoftVISUALC++6.0 (MVC++)включает в себя: — встроенный редактор текста; — компилятор с языка С++; — компоновщик; — загрузчик — отладчик. CистемаMVC++ хранится на жестком диске в общей папкеMSVisualStudio и занимает около 50 Мб на диске. Загрузочный файл системы MVC++ имеет имяMSDEV.exe

                      Источник: studfile.net

                      Вопрос № 395207 — Информатика

                      Если размер кластера на жестком диске 512 байт, а размер файла 864 байт, то на диске под него будет отведено (то есть недоступно для других файлов) _______ кластер(а).

                      Другие вопросы по предмету Информатика

                      Вопрос № 395208

                      Машинно-зависимый язык низкого уровня, в котором мнемонические имена соответствуют отдельным машинным командам – это …

                      естественный язык
                      Visual Basic
                      язык ассемблера

                      Вопрос № 395209

                      Языками программирования 1-го поколения являлись …
                      алгоритмические языки
                      естественные языки
                      проблемно-ориентированные языки
                      машинные языки конкретного компьютера

                      Вопрос № 395213

                      Понятия «отношение, атрибут» относятся к основным понятиям ________ модели данных.
                      иерархической
                      реляционной

                      Вопрос № 395216

                      При формировании запроса в СУБД Access Построитель выражений, окно которого приведено на рисунке, использовался .

                      Источник: testna5.ru

                      Рейтинг
                      ( Пока оценок нет )
                      Загрузка ...
                      EFT-Soft.ru