Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 11.02.2014, 14:25   #1
alekopoko
Форумчанин
 
Регистрация: 03.04.2013
Сообщений: 167
По умолчанию вопрос о процессе компиляции

вот есть два кода:
1.cpp

Код:
#include<stdio.h>
void output_masiv(int[],int);
void main()
{
	int n=0;
	int a[100];
	printf("razmer masiva A:\n");
	scanf("%d",&n);
	printf("vvod elementov masiva A:\n");
	for(int i=0;i<n;i++)
	scanf("%d",&a[i]);
	printf("output masiv A:\n");
	output_masiv(a,n);
}
2.cpp

Код:

Код:
#include<stdio.h>
void output_masiv(int a[],int n)
{
	for(int i=0;i<n;i++)
	printf("%d ",a[i]);
	printf("\n");
}
На последней стадии компиляции, когда компоновщик объединяет файлы .obj ,на примере моей программы получается вот это?(код ниже),только на машинном языке,который воспринимает компьютер?
Это и есть файл exe(исполняемая программа, которая может загружаться и запускаться операционной системой) ?
Код:
#include<stdio.h>
void output_masiv(int[],int);
void output_masiv(int a[],int n)
{
	for(int i=0;i<n;i++)
	printf("%d ",a[i]);
	printf("\n");
}
void main()
{
	int n=0;
	int a[100];
	printf("razmer masiva A:\n");
	scanf("%d",&n);
	printf("vvod elementov masiva A:\n");
	for(int i=0;i<n;i++)
	scanf("%d",&a[i]);
	printf("output masiv A:\n");
	output_masiv(a,n);
}
alekopoko вне форума Ответить с цитированием
Старый 11.02.2014, 14:45   #2
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

ну образно говоря да.
(исключение импортированные функции)

естественно не код там хранится, а скомпиленный код.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.

Последний раз редактировалось Пепел Феникса; 11.02.2014 в 14:52.
Пепел Феникса вне форума Ответить с цитированием
Старый 11.02.2014, 14:47   #3
challengerr
Участник клуба
 
Аватар для challengerr
 
Регистрация: 30.07.2008
Сообщений: 1,601
По умолчанию

Нет. Из исходного кода на языке C создается ассемблерный листинг (который помещается в объектный код), который в свою очередь переводится в машинные коды, который понятен процессорам архитектуры x86. exe это набор машинных кодов (опкодов) в секции .code. Exe это образ программы, который процессор загружает в оперативную память в той же структуре, в которой оно находится в exe. В начале exe файла находится MS-DOS заголовок, после этого идет PE заголовок, после PE заголовка описания секций. Секции это .code с опкодами исполняемыми процессором, .text в которых хранятся текстовые константы (строки), .rdata данные переменных только для чтения .data - данные переменных.
"SPACE.THE FINAL FRONTIER.This's a voyage of starship Enterprise. It's 5-year mission to explore strange new worlds,to seek out new life and civilizations,to boldly go where no man has gone before"
challengerr вне форума Ответить с цитированием
Старый 11.02.2014, 19:39   #4
Ezhik Kihze
Форумчанин
 
Регистрация: 24.12.2012
Сообщений: 639
По умолчанию

Цитата:
Из исходного кода на языке C создается ассемблерный листинг (который помещается в объектный код), который в свою очередь переводится в машинные коды, который понятен процессорам архитектуры x86.
Асм листинги уже мало кто без просьбы генерит. И листинг не помещается в объектный код. И архитектура далеко не ограничивается х86.

Цитата:
exe это набор машинных кодов (опкодов) в секции .code
Нет. Прочтите хотя бы http://stackoverflow.com/questions/1...t-get-its-name

Цитата:
В начале exe файла находится MS-DOS заголовок, после этого идет PE заголовок, после PE заголовка описания секций.
Кроме ПЕ были (еще встречаются) другие форматы.

Чтиво:
http://msdn.microsoft.com/en-us/magazine/cc301805.aspx
http://www.csn.ul.ie/~caolan/publink...c/pefile2.html
ICQ: 677936656 Gmail: ekEmbed@gmail.com

Последний раз редактировалось Ezhik Kihze; 11.02.2014 в 19:42.
Ezhik Kihze вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вывод информации о процессе WorldMaster C# (си шарп) 8 30.08.2013 08:29
вопрос по компиляции varich Общие вопросы C/C++ 4 01.05.2013 13:17
вопрос о компиляции в вижуале Kukurudza Общие вопросы C/C++ 1 27.06.2011 09:35
Информация о созданном процессе процессе Deathcore Помощь студентам 1 05.04.2011 19:54
Нити в процессе JustLikeFar Win Api 6 23.08.2009 17:32