Другие языки программирования и технологии
Как выполняются программы на компьютере ?
То есть допустим : я написал программу на С++ например даже Hello World! Я её скомпилировал компилятор перевёл её в машинный код для моего проца она запустилась и всё хорошо! Потом я получаю ехе-шник, запускаю его и снова получаю Hello World! ВОПРОС : Как потом эта программа запускается? ехе-шник что снова компелируется что бы запустилась программа? Или как машина понемает что надо сделать ...
Да.. . Интересный вопрос. Сам не понимал что-это за чудо ехе-файлы: у каждого свой значок и не все можно удалить) . Да еще и сами выполняются.
Попробую объяснить.
.ехе файл - обычный файл. Он разделен на несколько частей. Krab Bark хорошо описал из чего он состоит.
У Windows есть спец программа, которая при запуске исполняемого файла копирует его содержимое в оперативную память, потому что эта память очень быстрая.
Память. Она состоит из ячеек, каждая ячейка имеет свой номер. Это похоже на многоквартирный дом: каждая квартира имеет свой номер, чтобы обратиться - надо постучаться в дверь. Номер ячейки называется адресом.
Процессор. Он с самого включения компьютера получает адрес ячейки, в которой записана команда. Команда - это просто число. Процессор читает это число, сверяет со своим списком, где написаны числа и действия, которое нужно выполнить. Когда находит в списке число, то делает действие, которое написано рядом с ним. Всё! После того как процессор выполнил команду, он читает следующую.
Действия бывают разными. Сложение, вычитание, копирование.. . Всё это выполняется над числами. Но может быть действие, которое говорит процессору, что надо брать не следующую команду, а та, которая по другому адресу.
Вернемся к теме. Это был упрощенно описан принцип работы компьютера. Что же делает Windows? После загрузки программы она находит в ней первую команду и говорит, чтобы процессор начинал с неё выполнение.
Нашей программе надо вывести "Hello World !". Это очень сложно сделать командами процессора. Поэтому надо сказать процессору, чтобы он продолжил выполнения с адреса, где лежат команды системы, которые смогут вывести эту строчку. При этом мы также указываем, номер ячейки, где находится эта строка.
После вывода строки система говорит процессору, чтобы он перешел обратно в нашу программу.
Мы опять просим систему, но на этот раз сделать задержку экрана, чтобы пользователь прочитал сообщение.
Когда пользователь нажмет клавишу наша программа выходит. Она просто говорит процессору, что ему надо выполнить команды Windows, которые освободят память (в которую система загрузила наш файл) . И программа завершается.
//
Написал много. Пытался проще, вышло или нет - судить не мне. Но, главное - понять этот принцип! Пока я этого не уяснил, ошибки в программах появлялись ниоткуда. Я не мог понять некоторых вещей.
Важно знать место своей программы в компьютере.
Попробую объяснить.
.ехе файл - обычный файл. Он разделен на несколько частей. Krab Bark хорошо описал из чего он состоит.
У Windows есть спец программа, которая при запуске исполняемого файла копирует его содержимое в оперативную память, потому что эта память очень быстрая.
Память. Она состоит из ячеек, каждая ячейка имеет свой номер. Это похоже на многоквартирный дом: каждая квартира имеет свой номер, чтобы обратиться - надо постучаться в дверь. Номер ячейки называется адресом.
Процессор. Он с самого включения компьютера получает адрес ячейки, в которой записана команда. Команда - это просто число. Процессор читает это число, сверяет со своим списком, где написаны числа и действия, которое нужно выполнить. Когда находит в списке число, то делает действие, которое написано рядом с ним. Всё! После того как процессор выполнил команду, он читает следующую.
Действия бывают разными. Сложение, вычитание, копирование.. . Всё это выполняется над числами. Но может быть действие, которое говорит процессору, что надо брать не следующую команду, а та, которая по другому адресу.
Вернемся к теме. Это был упрощенно описан принцип работы компьютера. Что же делает Windows? После загрузки программы она находит в ней первую команду и говорит, чтобы процессор начинал с неё выполнение.
Нашей программе надо вывести "Hello World !". Это очень сложно сделать командами процессора. Поэтому надо сказать процессору, чтобы он продолжил выполнения с адреса, где лежат команды системы, которые смогут вывести эту строчку. При этом мы также указываем, номер ячейки, где находится эта строка.
После вывода строки система говорит процессору, чтобы он перешел обратно в нашу программу.
Мы опять просим систему, но на этот раз сделать задержку экрана, чтобы пользователь прочитал сообщение.
Когда пользователь нажмет клавишу наша программа выходит. Она просто говорит процессору, что ему надо выполнить команды Windows, которые освободят память (в которую система загрузила наш файл) . И программа завершается.
//
Написал много. Пытался проще, вышло или нет - судить не мне. Но, главное - понять этот принцип! Пока я этого не уяснил, ошибки в программах появлялись ниоткуда. Я не мог понять некоторых вещей.
Важно знать место своей программы в компьютере.
exe-файл содержит заголовок - информацию для операционной системы, и сам машинный код. Операционная система при запуске exe-файла читает его заголовок, в соответствии с ним размещает остаток файла, содержащий машинный код, в памяти, и передает управление на указанный в заголовке байт, считая его первым байтом первой команды, подлежащей выполнению.
начни с изучения РЕ-заговков. Потом машинный код тогда тебе будет все понятно. Не путай с java ))
Конечно примерно так как пишут здесь. Но на самом деле всё гораздо сложнее и описать полностью, что происходит - вряд ли это даст полное понимание, так как после некоторых непонятных слов появятся новые вопросы. Наверное, действительно, проще взять описание формата exe-файла или com-файла или др. и постепенно по ним задавать вопросы. Вот тогда, наверное, будет больше пользы!
Дмитрий Семенов
Думаю легче сначала все-таки ассемблер немного выучить. В форматах он запутается. Мое непрофессиональное объяснение тоже вряд ли чему научит... А если человек сам в этом разберется - то будет хорошо. Уже неплохо, что сам берется головой думать, а не просто по шаблоны программы делает.
Я вот недавно наконец-то понял как реализуется сложение логическими схемами. Счастью не было предела!
Я вот недавно наконец-то понял как реализуется сложение логическими схемами. Счастью не было предела!
Exe - шник это набор комманд для ядра windows. она их читает и возвращает тебе результат.
Олег Юрьевич Сидорков
Процессорные команды (для голого компа без винды) пишутся на ассемблере
Похожие вопросы
- Вопрос по ядру ОС. Как выполняются программы на операционной системе? (углубленно).
- Помогите написать программу выключения компьютера на С++
- по поводу шпионской программы на компьютер! вопрос внутри!!!!
- Какие программы для компьютера жизненно необходимы?
- Как написать программу на компьютер очень хочю написать программу но незнаю как
- есть ли такая программа на компьютер с которой можно разговаривать с компом
- Напишите полезные программы для компьютера
- Посоветуйте деликатную программу очистки компьютера и реестра от разного мусора?
- Почему программы на одних ЯП выполняются быстрее, чем на других?
- как сделать так чтобы два блока программы выполнялись одновременно в c++ ?
на самом деле программа ожидает действий пользователя. в частном случае - нажатия на любую клавишу или только на энтер.