Cтраница 2
Это может создавать проблемы, когда локальные метки рассыпаны среди структурирующих управляющих команд. Эта опция заставляет ассемблер поддерживать текущий контекст локальной метки, когда он сталкивается с меткой структурирующей управляющей команды. [16]
Ассемблер в такой ситуации предоставляет возможность определения транслятором локальных меток при макрорасширении. В отличие от имен обычных меток имена локальных меток состоят из числа в диапазоне от 1 до 127 ( 8) и следующего за числом символам п, как показано в программе 2.11 а. В ней локальная метка 10 определена дважды. [17]
Локальная метка может повторяться в программе неоднократно. Это не приводит к конфликтной ситуации, потому что она имеет смысл только в блоке локальных меток. Блок локальных меток задается одним из двух способов. [18]
Локальная метка может повторяться в программе неоднократно. Это не приводит к конфликтной ситуации, потому что она имеет смысл только в блоке локальных меток. Блок локальных меток задается одним из двух способов. [19]
Ассемблер в такой ситуации предоставляет возможность определения транслятором локальных меток при макрорасширении. В отличие от имен обычных меток имена локальных меток состоят из числа в диапазоне от 1 до 127 ( 8) и следующего за числом символам п, как показано в программе 2.11 а. В ней локальная метка 10 определена дважды. [20]
Во многих случаях макрокоманда будет содержать цикл, в результате чего могут потребоваться одна или более меток для операторов, генерируемых макрокомандой. Если макрокоманда вызывается более одного раза, то может возникнуть необходимость повторения имен меток. Это осуществляется с помощью локальных меток, которые могут использоваться как в макрокомандах, так и в других местах программы. [21]
![]() |
Примеры локальных символов. [22] |
Локальные символы удобны для использования в инструкциях перехода. Использование локальных символов уменьшает возможность появления многократно определенных символов в программах пользователя и позволяет различать символы входных точек и локальные символы, так как к последним не может быть обращений извне блока локальных символов. В других блоках могут быть локальные метки с такими же именами, как и в данном блоке. Это не приводит к конфликтным ситуациям. [23]
Это означает, что любые метки символа подчеркивания в выражении терма после символа () не будут разыскиваться в локальном списке меток макросов. Оператор не имеет никакого эффекта при обычных метках или вне макрорасширения. Оператор ( я) полезен для прохождения локальных меток как макроаргументов, которые нужно использовать как ссылки в макрокоманде. Обратите внимание, что символ () также используется как двоичный оператор исключение по ИЛИ. [24]