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

Категория: Учебники по 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

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