Умник

Термины и обозначения, принятые на этом сайте.

  •  
  • Что подразумевается под словами "текущий", например, код.
  •  
  • Два типа операндов - источник и приёмник.
  •  
  • Что такое целевой (операнд, сегмент).
  •  
  • Обозначение типа Бит=0/1 - сброшен / установлен.
  •  
  • При работе со стеком: push/pop - "поместить" / "извлечь".
  •  
  • Что такое alias.
  •  
  • Почему "gate" переводится как шлюз.



    Что подразумевается под словами "текущий", например, код.

            Словом "текущий" обозначается объект, с которым происходит работа в данное время. Например:
  •  
  • текущий код (программа, процедура) - тот код, который в данный момент времени выполняет процессор.
  •  
  • текущая задача - задача, в контексте которой в данный момент процессор выполняет программу; эта та задача, селектор дескриптора TSS которой загружен в регистр TR.
  •  
  • текущий сегмент (данных, стека, кода) - тот, в который по умолчанию обращается процессор в данный момент времени.

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



    Два типа операндов - источник и приёмник.

            Все команды, обрабатывающие данные, имеют дело с несколькими операндами. Как правило, этих операндов два: тот, из которого берётся начальное значение и тот, в который помещается результат.
            Исходный операнд, из которого берётся начальное значение, называется операндом-источником или просто источником. Операнд, в который помещается результат, называется операндом назначения.
            Эти названия являются переводом английских терминов:
  •  
  • source - источник
  •  
  • destination - назначение

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

            В качестве примера сленга, можно привести слово "snoop", которое переводится как "подглядывать". Этим словом описывается способность процессоров и других устройств обращаться по системной шине прямо к кэшу процессора, чтобы определить, соответствует ли значение в кэше соответствующей области памяти (другими словами - прокэшировал ли процессор данные в память или ещё нет). Встречая фразу типа "... it is the responsibility of the memory controller to snoop this operation and update memory" трудно перевести её, используя общепринятую терминологию - получается слишком запутанный перевод. В результате приходится выдумывать новый термин. На этом сайте вы сможете встретить фразу типа "... это должен делать контроллер памяти, который подглядывает за этой операцией и обновляет память".

            Возвращаясь к операндам, хочу отметить, что термины "источник" и "приёмник" не являются благозвучными и не наиболее точным переводом английских терминов, но они - общепринятые, поэтому постарайтесь к ним привыкнуть и тогда вам будет легче читать другие справочники и учебники по программированию.



    Что такое целевой (операнд, сегмент).

            Целевой операнд или сегмент (по англ. - target operand / segment) - это тот, к которому должен обратиться процессор. Например, команда перехода JMP имеет адрес перехода. Такой адрес и называется целевым адресом (т.е., этот адрес - цель данной команды).
            Команды дальней передачи управления, например, FAR JMP, имеют целевой операнд - адрес, состоящий из двух частей: селектора (или сегментного адреса) и смещения. Так вот, сегмент, в который будет передано управление, называется целевой сегмент.



    Обозначение типа Бит=0/1 - сброшен / установлен.

            Это - сокращённая запись возможных значений бита (поля, байта, слова...) и смысл этих значений. Например, описание одного бита можно представить двумя способами:
    1. Бит P означает присутствие сегмента. Если этот бит сброшен (т.е. равен 0), то данный сегмент в памяти не присутствует, если же установлен (1) - то присутствует.
    2. Бит P означает присутствие сегмента. P = 1/0 - сегмент в памяти присутствует / нет.

            Такая сокращённая запись удобна, особенно при описании формата байта, в котором каждый бит имеет своё особое предназначение. Что касается битовых полей, то такое краткое описание будет применяться только к двухбитовым полям, например:

    0,1: диск = 0/1/2/3 - A/B/C/D
    

            Также, сокращённая запись будет применяться к большим элементам данных, которые описывают несколько элементов, например:

    	db	season		; season = 0/1/2/3 - зима/весна/лето/осень.
    



    При работе со стеком: push/pop - "поместить" / "извлечь".

            Явное обращение к стеку процессор производит двумя типами команд: push (pushd, pusha, pushf, pushfd) и pop (popd, popa, popf, popfd).
            По английски "push" значит "толкать", "pop" - "выстрел" или "хлопо'к". Простой перевод этих слов не выразит смысла действий команд работы со стеком, поэтому применяются два термина:
  •  
  • push into stack - поместить в стек,
  •  
  • pop from stack - извлечь из стека.



    Что такое alias.

            Alias - это повторное описание одного и того же объекта. Процессор использует некоторые системные объекты, например, локальные дескрипторные таблицы; обращаться к системному объекту может только сам процессор, программе процессор это не позволит сделать. Для того, чтобы у программы была возможность обращаться к таким объектам, необходимо создавать другое описание системного объекта, уже как сегмента данных.
            В качестве второго примера можно привести самоизменяющийся код. В защищённом режиме процессор не допустит записи в сегмент кода (как правило, он даже не разрешит считывать его как данные) и для изменения кода необходимо создавать сегмент данных, через который уже можно менять этот код.
            Такие дополнительные сегменты, через которые можно получить доступ туда, куда процессор запрещает, называются на этом сайте а'лиасными сегментами. Alias переводится как "псевдоним", "прозвище" или "кличка". Эти варианты перевода не отражают сути данного термина, кроме того, подобрать лаконичный русский эквивалент автору не удалось, поэтому он придумал и использует новый термин - алиас.



    Почему "gate" переводится как шлюз.

            Термином Gate обозначается специальный системный объект, который позволяет программе передавать управление с одного уровня на другой, точнее, с менее привилегированного на более привилегированный. Простую передачу управления между уровнями привилегий процессор запрещает и это лежит в основе механизма защиты, но иногда операционной системе проще предоставить свои сервисы прикладным программам, чем создавать для них специальные библиотеки и тогда возникает необходимость в объектах gate. Gate переводится обычно как "ворота", а в некоторых документациях - как "вентиль". Оба эти перевода не отражают сущности этого системного объекта и поэтому на этом сайте он называется шлюз.
            Шлюз позволяет прикладной программе "опуститься" со своего уровня привилегий на нижний, более привилегированный, передать управление системной процедуре, а потом, процессор вернёт управление прикладной программе, "поднявшись" через шлюз на её уровень привилегий.
            Необходимость шлюза заключается в том, что это единственный способ передачи управления между разными уровнями привилегий. Наличие шлюзов и возможность ими пользоваться определяется операционной системой - таким образом она может контролировать межуровневую передачу управления.
            Также шлюзами являются вектора таблицы прерываний в защищённом режиме. Они позволяют системе, находящейся на самом привилегированном уровне, обрабатывать прерывания и исключения, возникшие на прикладном уровне.

    В начало   Вопросы? Замечания? Пишите: sasm@narod.ru

      Copyright © Александр Семенко.
    TopList

    Hosted by uCoz