Исполнение машинных команд

Категория: Учебники по Delphi » Быстрый старт в Delphi

Прежде чем переходить к дальнейшему изучению материала, необходимо рас­смотреть ряд понятий.

Мы уже разобрались с байтом и его размером. Теперь рассмотрим другие суще­ствующие размерности:

  • 1 килобайт = 1024 байт;
  • 1 мегабайт = 1024 килобайт;
  • 1 гигабайт = 1024 мегабайт.

Почему именно 1024? Это число 2 в 10-й степени. В компьютере большинство значений являются степенью числа 2, потому что компьютер оперирует двоичной системой, и таким образом можно максимально эффективно использовать его воз­можности.

 

Сегмент— это область внутренней (оперативной) памяти компьютера (внеш­няя память представлена накопителями на магнитных дисках и лентах). Раньше, когда операционные системы были 16-битными, процессор не мог работать с памя­тью размером более 64 килобайт, потому что это максимальный размер области памяти, который можно адресовать, используя в этих целях адрес длиной в два байта. Поэтому память делилась на сегменты по размеру и по назначению. На дан­ный момент мы используем 32-разрядную ОС, которая может адресовать до 4 Гбайт оперативной памяти (длина адреса — 32 бита или 4 байта).

 

Поэтому можно сказать, что память стала сплошной. Однако деление ее по назначению все-таки осталось.

Существуют следующие сегменты памяти:

  • сегмент кода — в эту область памяти загружается машинный код, который бу­дет потом выполняться процессором;
  • сегмент данных — это область памяти для хранения данных;
  • сегмент стека — область памяти для хранения временных (локальных) данных и адресов возврата из процедур.

Каждой запущенной программе отводится свой сегмент кода, данных и стека. Поэтому данные одной программы не могут пересекаться с данными или кодом другой программы. Да, существуют методы взаимодействия между процессами (программами), но это отдельный случай.

 

Регистр — ячейка памяти в процессоре. Размер ячейки зависит от ее разрядно­сти. В 32-разрядных процессорах ячейки 32-битные, но есть и 64-битные. Таких регистров у процессора несколько, и каждый из них предназначен для определен­ных целей. Существуют также регистры общего значения, которые программа мо­жет использовать на свое усмотрение.

 регистр

На рис. 1.6 показан регистр еах. Полная его длина 32 бита, но младшая полови­на— это регистр АХ (16-битный вариант регистра). То есть если мы "попросим" процессор показать нам содержимое регистра АХ, то мы увидим половину регистра еах. Иногда это очень удобно, особенно когда требуется прочитать только полови­ну числа из регистра.

 

ПРИМЕЧАНИЕ. Очень часто, прежде чем выполнить какую-то команду, процессор за­гружает необходимые данные в регистры и только после этого выполняет необходимую инструкцию. Но возможны варианты, когда вычисления идут напрямую с памятью.

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

www.intel.com.
 

Двоичная система работы процессора

Категория: Учебники по Delphi » Быстрый старт в Delphi

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

 

История языков программирования

Категория: Учебники по Delphi » Быстрый старт в Delphi

"В начале Бог создал бит и байт..."

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

 

Мы также выяснили, что первые программисты писали программы в машинных кодах. Тогда еще не было компиляторов и приходилось все писать числами. Вы даже представить себе не можете, какой это адский труд — постоянно держать в памяти таблицу машинных кодов (это не таблица умножения). Например, вам по­нятно шестнадцатеричное число 8ВСЗ? Нет? А это обычная команда копирования между двумя ячейками регистров.

 

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

Это был пример машинного кода, потому что тогда регистры были другие и процессоры были намного проще. Со временем компьютер стал умнеть, но самое главное, он все так же оперировал двоичными числами, однако делал это намного быстрее.

 

Программист — это человек, а не железка, и ему очень тяжело создавать логику работы программы в числах. Намного легче работать с привычными словами. На­пример, все ту же команду пересылки удобней записать словами типа "скопировать еbх в еах" (еах и ebx — это регистры процессора). Но что делать, если компьютер не понимает слов, а только числа? Выход есть — написать такую программу, кото­рая будет превращать написанный текст, понятный человеку, в машинные коды. Пусть компьютер сам создает байт-код. Программу, выполняющую эти действия, назвали компилятором, а язык, на котором писался исходный текст программы, — языком программирования.

 

Основные принципы работы компьютера: Машинный язык

Категория: Учебники по Delphi » Быстрый старт в Delphi

Данные на диске хранятся в двоичном виде. Даже текстовые файлы на диске выглядят в виде нулей и единиц. Точно так же выглядит и любая программа, толь­ко ее называют машинным кодом. Давайте познакомимся с ним немного поближе.

 

Любая программа представляет собой последовательность команд. Эти команды называются процессорными инструкциями. В точном соответствии этим инструк­циям процессор определяет, что и как ему нужно делать. Когда вы запускаете про­грамму, компьютер загружает ее машинный код в оперативную память и начинает выполнять команду за командой. Наша задача как программистов написать эти ин­струкции таким образом, чтобы компьютер понял, что мы от него хотим.

 

Реальная программа, которую выполняет компьютер, представляет собой по­следовательность единиц и нулей. Такую последовательность называют машинным языком. Человек не способен эффективно думать единицами и нулями. Для нас легче воспринимается осмысленный текст, а не сумасшедшие числа в двоичной системе исчисления, с которой мы не привыкли работать. Например, команда сложения двух
регистров в шестнадцатеричной системе выглядит так:

$ОЗСЗ

Это мало о чем го­ворит, и запомнить такую команду очень тяжело. Намного проще написать "сло­жить число 1 и число 2". Первое время программисты писали программы в машинных кодах, пока кому- то не пришла в голову идея: "Почему бы не писать текст программы на понятном языке, а потом заставлять компьютер переводить этот текст в машинный код?" Идея действительно заслуживала внимания. Так появился первый компилятор — программа, которая переводила текст программ в машинный код.

 

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

Здесь настало время сделать паузу и рассказать вам небольшую историю языков программирования. Она достаточно интересна и поучительна. Ну а потом мы про­должим изучение принципов работы компьютера и познакомимся со структурой процессора и его работой при выполнении программы.

 

 

О сайте DelphiComponent.ru и о том что такое Delphi

Категория: Учебники по Delphi » Быстрый старт в Delphi

Данный сайт посвящен одному из наиболее популярных в нашей стране и перспективному во всем мире языку программирования Delphi. Он предназначена для программистов всех уровней, от начинающего до опытного.Как показывает практика, большинство людей научились программированию по книгам. Однако далеко не все из этих книг объясняют принципиальные основы работы Windows и компьютера в целом. 
 
Отсутствие базовых знаний в этой области не позволяет писать эффективные программы.Этот сайт может научить многому. Однако без самостоятельного стремления совершенствоваться в данной области вы не сможете самостоятельно писать "хорошие" программы.  На этом сайте будут рассматриваться различные методы, некоторые шаблоны и приемы программирования на языке Delphi, однако описать абсолютно все, как вы понимаете, здесь просто невозможно. Программирование — это такая область, в которой требуется постоянное обучение. В связи с этим нельзя останавливаться на достигнутом, прочитав статьи только на этом сайте. Нужно постоянно совершенствоваться и обучатся. За что я люблю компьютеры, так это за то, что они являются безграничным источником знаний, которые нельзя изучить в полном объеме. 
 
Даже если вы сможете узнать все, пока вы будете обучаться, появятся новые технологии. Именно поэтому нет человека, который знал бы все. Я тоже не знаю, но люблю изучать что-то но¬вое. Но если даже представить себе, что я смогу изучить все, то лично мне жить станет скучно.
Прежде чем приступить к изучению статей этого сайта, необходимо сделать несколько замечаний. Первое из них касается терминологии.
 
В тексте часто будет использоваться выражение "Язык программирования Delphi". Многие утверждают, что Delphi — это среда разработки, которая использует язык программирования Pascal * Паскаль). В принципе, здесь не утверждается, что это ошибка. И все же в Delphi от старого Паскаля осталось очень мало, поэтому я считаю, что это не просто среда разработки, а самостоятельный язык программирования. Это лично мое мнение как автора, и вы можете с ним соглашаться или нет. Но даже разработчик среды разработки Delphi уже тоже воспринимает Delphi как самостоятельный язык.
Теперь о содержимом сайта. В нем сделана попытка представить изучаемый материал таким образом, чтобы было понятно даже человеку,который только недавно познакомился с компьютером. Возможно, опытным программистам какие-то части читать будет скучно, но даже здесь будут описываться достаточно специфичные вещи, среди которых можно найти для себя довольно много полезного. Поверьте, это действительно так и связано с тем, что большинство книг по данной проблематике упускают из виду некоторые очень важные тонкости, которые желательно знать для понимания принципа работы программ. Без этого понимания тяжело дви¬гаться дальше, и любые новые технологии будут казаться тяжелыми и сложными.
 
Прежде чем приступить к чтению статей, учтите один совет. Все статьи этого сайта желательно читать полностью, от начала и до конца, потому что материал излагается постепенно, и некоторые вещи могут быть непонятны, если что-то пропустить вначале. И последнее, некоторые термины, встречающиеся на нашем сайте, могут отличаться от аналогичных, которые изложены в другой технической литературе, относящейся к данному вопросу. Это связано с особенностями перевода англоязычного текста на русский язык. В любом случае терминология, которая приводится в книге, делает ее намного проще и понятней как начинающим, так и опытным программистам.