Что такое флаг в программировании
Перейти к содержимому

Что такое флаг в программировании

  • автор:

Флаг (компьютерная техника)

В программировании понятие флаг относится к одному или нескольким битам памяти, используемым для хранения двоичной комбинации или кода, который характеризует состояние некоторого объекта. Флаги обычно входят в определённые структуры данных, такие как записи баз данных, и их значения, как правило, связаны со значением структур данных, частью которых они являются. Во многих случаях двоичное значение флага представляет собой кодированное представление одного из нескольких возможных состояний или статусов объекта. В других случаях двоичные значения флагов могут представлять собой один или несколько атрибутов в битовом поле, зачастую связанных с возможностями или доступом, например, «может быть записано в», или «может быть удалено». Однако флагам могут быть назначены и другие значения. Один из вариантов использования флагов состоит в маркировке для назначения структуры данных к последующей обработке.

В микропроцессорах и других логических устройствах флаги обычно используются для управления и индикации промежуточного или конечного состояния, а также для характеристики результата различных операций. Микропроцессоры как правило имеют регистр статуса, который состоит из таких флагов, используемых для обозначения различных состояний после операции, например, если произошло арифметическое переполнение. Флаги могут использоваться в управлении последовательностью операций, в частности, в обработке условных команд перехода. Например, по команде je (Jump if Equal, Переход по равенству) в ассемблере X86 произойдёт переход, если был установлен флаг Z (zero, ноль) на предыдущий операции.

См. также

  • Регистр флагов
  • Флаг переноса
  • Операционная система
  • Технологии процессоров

Wikimedia Foundation . 2010 .

Полезное

Смотреть что такое «Флаг (компьютерная техника)» в других словарях:

  • Флаг переноса — CF (англ. Carry flag) в электронных арифметических устройствах специальный флаг, устанавливаемый в результате арифметического переноса или сдвига со старшего значащего бита. Для арифметической операции может рассматриваться как… … Википедия
  • Флаг (значения) — Флаг: Флаг полотнище, служащее символом государства (региона, города) или используемое для передачи информации (например, на флоте). Флаг (ботаника), или парус название одного из лепестков в венчике мотылькового типа. Флаг (нотная… … Википедия
  • Xenus. Точка кипения (компьютерная игра) — Xenus: Boiling point Разработчик Deep Shadows Издатели Games Factory Interactive Дата выпуска … Википедия
  • Регистр флагов — Регистр флагов регистр процессора, отражающий текущее состояние процессора. Содержание 1 Архитектура x86 1.1 Флаги состояния 1.2 Управляющий флаг … Википедия
  • Серпухов — У этого термина существуют и другие значения, см. Серпухов (значения). Город Серпухов … Википедия
  • Acer Inc. — Acer Год основания 1976 Тип Публичная компания Расположение … Википедия
  • GIGABYTE Technology — Тип Публичная Девиз компании Upgrade your life Год основания 1986 Расположение … Википедия
  • Соединенные Штаты Америки — (США, USA) Соединенные Штаты Америки это страна в Северной Америке Соединенные штаты Америки (США) это одна из крупнейших мировых держав Содержание >>>>>>>>>>>>>>>>> … Энциклопедия инвестора
  • Hitachi, Ltd. — Hitachi, Ltd. Год основания 1910 Тип Публичная компания Девиз компании «Inspire the Next» («Предвосхищая будущее») … Википедия
  • — Hitachi, Ltd. Тип Публичная компания Листинг на бирже NYSE: HIT … Википедия
  • Обратная связь: Техподдержка, Реклама на сайте
  • �� Путешествия

Экспорт словарей на сайты, сделанные на PHP,
WordPress, MODx.

  • Пометить текст и поделитьсяИскать в этом же словареИскать синонимы
  • Искать во всех словарях
  • Искать в переводах
  • Искать в ИнтернетеИскать в этой же категории

Флаг (компьютерная техника)

В программировании понятие флаг относится к одному или нескольким битам памяти, используемым для хранения двоичной комбинации или кода, который характеризует состояние некоторого объекта. Флаги обычно входят в определённые структуры данных, такие как записи баз данных, и их значения, как правило, связаны со значением структур данных, частью которых они являются. Во многих случаях двоичное значение флага представляет собой кодированное представление одного из нескольких возможных состояний или статусов объекта. В других случаях двоичные значения флагов могут представлять собой один или несколько атрибутов в битовом поле, зачастую связанных с возможностями или доступом, например, «может быть записано в», или «может быть удалено». Однако флагам могут быть назначены и другие значения. Один из вариантов использования флагов состоит в маркировке для назначения структуры данных к последующей обработке.

Пример использования флагов в языке С(Си):Иногда выгодно использовать массивы флагов, чтобы отметить некоторые элементы другого массива, для последующей работы с ними.

В микропроцессорах и других логических устройствах флаги обычно используются для управления и индикации промежуточного или конечного состояния, а также для характеристики результата различных операций. Микропроцессоры как правило имеют регистр статуса, который состоит из таких флагов, используемых для обозначения различных состояний после операции, например, если произошло арифметическое переполнение. Флаги могут использоваться в управлении последовательностью операций, в частности, в обработке условных команд перехода. Например, по команде je (Jump if Equal, Переход по равенству) в ассемблере X86 произойдёт переход, если был установлен флаг Z (zero, ноль) на предыдущей операции.

Связанные понятия

Управляющая последовательность (исключённая последовательность, экранированная последовательность, от англ. escape sequence) — совокупность идущих подряд значащих элементов, в группе теряющих для обрабатывающего механизма своё индивидуальное значение, одновременно с приобретением этой группой нового значения.

Таблица векторов прерываний (англ. Interrupt Descriptor Table, IDT) используется в архитектуре x86 и служит для определения корректного ответа на прерывания и исключения.

В информатике таблица символов (от англ. symbol table «таблица идентификаторов») — это структура данных, используемая транслятором (компилятором или интерпретатором), в которой каждый идентификатор переменной или функции из исходного кода ассоциируется с информацией, связанной с его объявлением или появлением в коде: типом данных, областью видимости и в некоторых случаях местом в памяти (смещением).

Маршалинг (от англ. marshal — упорядочивать) в информатике — процесс преобразования информации (данных, двоичного представления объекта), хранящейся в оперативной памяти, в формат, пригодный для хранения или передачи. Процесс похож на сериализацию (отличия см. ниже). Обычно применяется тогда, когда информацию (данные, объекты) необходимо передавать между различными частями одной программы или от одной программы к другой.

Экранирование символов — замена в тексте управляющих символов на соответствующие текстовые подстановки. Один из видов управляющих последовательностей.

Упоминания в литературе

♦ Запись целочисленных значений в память процесса. Используя символ форматирования %n, злоумышленник может сохранять целочисленные значения в памяти процесса. Таким образом можно перезаписать важные значения, например флаги управления доступом или адрес возврата.

Приведенная в листинге 2.23 функция возвращает непустую строку – полный путь файла в случае, если пользователь выбрал или ввел имя файла. Здесь главной трудностью является заполнение довольно большой структуры OPENFILENAME. В данном примере используются только базовые возможности окна открытия файла и лишь некоторые из поддерживаемых им флагов (поле Flags):

Таблица объектов расположена непосредственно за NT-заголовком. Значение «NTheadersize» показывает количество байт, следующих за полем «flags». Итак, для определения смещения таблицы объектов нужно получить NTheaderSize и добавить размер поля флагов (24).

♦ При взводе флага Require Variable Declaration в каждый новый модуль будет добавлена строка Option Explicit, делающая имена переменных уникальными во всем пространстве имен проекта.

Связанные понятия (продолжение)

Индексный регистр — регистр процессора в современных ЦПУ, используемый для автоматического изменения адреса операнда во время исполнения программы.

Атака возврата в библиотеку (англ. Return-to-libc attack) — один из видов компьютерных атак, популярных на x86-совместимых машинах и схожие с ними, связанных с переполнением буфера, когда адрес возврата функции на стеке подменяется адресом иной функции в программе, и в последующую часть стека записываются параметры для вызываемой функции. Эта техника позволяет нападающему выполнить какую-либо существующую функцию без необходимости внедрять вредноносный код в программу.

Выравнивание данных в оперативной памяти компьютеров — способ размещения данных в памяти особым образом для ускорения доступа.

В программировании, ассемблерной вставкой называют возможность компилятора встраивать низкоуровневый код, написанный на ассемблере, в программу, написанную на языке высокого уровня, например, Си или Ada. Использование ассемблерных вставок может преследовать следующие цели.

Точка входа — адрес в оперативной памяти, с которого начинается выполнение программы. Другими словами — адрес, по которому хранится первая команда программы. Однако не надо путать её с «первыми командами» программы на языке высокого уровня. Например программа на C++ начинает выполнение с функции main(), на самом деле, программа в памяти начинается далеко не с первой команды этой функции.

Метка (англ. label) — символьное имя, идентификатор для более удобного указания данных и кода в языках программирования. Позволяет программисту обходиться без вычисления и пересчёта адресов и смещений внутри программы (эти действия за него выполняет компилятор). Несмотря на то, что большинство языков программирования высокого уровня поддерживают операции с метками, их использование крайне нежелательно, так как программный код становится плохочитаемым, и отладка такой программы занимает большее время.

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

Коди́рование — процесс написания программного кода, скриптов, с целью реализации определённого алгоритма на определённом языке программирования.

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

Глобальная переменная в программировании — переменная, областью видимости которой является вся программа, кроме специально затенённых областей. Механизмы взаимодействия с глобальными переменными называют механизмами доступа к глобальному окружению или состоянию (англ. global environment, global state). Глобальные переменные могут использоваться для взаимодействия между процедурами и функциями как альтернатива передачи аргументов и возвращения значений.

Загру́зчик (англ. loader) — в информатике, программа, отвечающая за загрузку исполнимых файлов и запуск соответствующих новых процессов. Обычно является частью операционной системы, но может быть и самостоятельной программой — к примеру, позволяющей операционной системе запускать программы, скомпилированные для других операционных систем (см. также: эмуляторы, WINE).

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

Аппле́т (англ. applet от application — приложение и -let — уменьшительный суффикс) — это несамостоятельный компонент программного обеспечения, работающий в контексте другого, полновесного приложения, предназначенный для одной узкой задачи и не имеющий ценности в отрыве от базового приложения.

Устройство ввода-вы́вода — компонент типовой архитектуры ЭВМ, предоставляющий компьютеру возможность взаимодействия с внешним миром и, в частности, с пользователями.

Менеджер памяти — часть компьютерной программы (как прикладной, так и операционной системы), обрабатывающая запросы на выделение и освобождение оперативной памяти или (для некоторых архитектур ЭВМ) запросы на включение заданной области памяти в адресное пространство процессора.

Прототипом функции в языке Си или C++ называется объявление функции, не содержащее тела функции, но указывающее имя функции, арность, типы аргументов и возвращаемый тип данных. В то время как определение функции описывает, что именно делает функция, прототип функции может восприниматься как описание её интерфейса.

Дескрипторные таблицы — служебные структуры данных, содержащие дескрипторы сегментов.

Пользовательское пространство — адресное пространство виртуальной памяти операционной системы, отводимое для пользовательских программ, в отличие от пространства ядра, которое резервируется для работы ядра операционной системы, его расширений и, возможно, некоторых драйверов устройств. В англоязычной компьютерной литературе термин «Userland» часто используется для обозначения совокупности приложений, которые выполняются в пространстве пользователя.

Стековый язык программирования (англ. stack-oriented programming language) — это язык программирования, в котором для передачи параметров используется машинная модель стека. Этому описанию соответствует несколько языков, в первую очередь Forth и PostScript, а также многие ассемблерные языки (использующие эту модель на низком уровне — Java, C#). При использовании стека в качестве основного канала передачи параметров между словами элементы языка естественным образом образуют фразы (последовательное.

Аппаратный порт — специализированный разъём в компьютере, предназначенный для подключения оборудования определённого типа. Обычно портами называют разъёмы, предназначенные для работы периферийного оборудования, существенно разделённого от архитектуры компьютера (например, не называют портами разъёмы PCI/ISA/AGP/VLB/PCI-E-шин, разъёмы для оперативной памяти и процессора).

Гибри́дная (или комбини́рованная) криптосисте́ма — это система шифрования, совмещающая преимущества криптосистемы с открытым ключом с производительностью симметричных криптосистем. Симметричный ключ используется для шифрования данных, а асимметричный для шифрования самого симметричного ключа, иначе это называется числовой упаковкой.

Автодополнение, автозавершение (англ. autocomplete) — функция в программах, предусматривающих интерактивный ввод текста (редакторы, оболочки командной строки, браузеры и т. д.) по дополнению текста по введённой его части.

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

Подсистема хранения (англ. database engine, storage engine) — компонент СУБД, управляющий механизмами хранения баз данных, или библиотека, подключаемая к программам и дающая им функции СУБД.

Атрибут файла (англ. file attribute) — метаданные, которые описывают файл. Атрибут может находиться в двух состояниях: либо установленный, либо снятый. Атрибуты рассматриваются отдельно от других метаданных, таких как даты, расширения имени файла или права доступа. Каталоги и другие объекты файловой системы также могут иметь определённые атрибуты. Также существуют расширенные атрибуты файлов, хранящие данные другого типа.

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

Адаптер программного компонента — это тип программного обеспечения, которое логически располагается между двумя программными компонентами и устраняет различия между ними.

Парсер (англ. parser; от parse – анализ, разбор) или синтаксический анализатор — часть программы, преобразующей входные данные (как правило, текст) в структурированный формат. Парсер выполняет синтаксический анализ текста.

Дополнительная память (англ. Extended memory, XMS) — память за пределами первого мегабайта адресного пространства IBM PC-совместимого компьютера с процессором Intel 80286 или более поздним.

Пакетное задание (англ. batch job) — способ запуска задач на исполнение для избегания простоев вычислительных систем. Фактически представляет собой список запускаемых программ с указанием параметров запуска и входных данных. Задачи запускаются последовательно. Концепция была разработана примерно в 1960-х годах и до сих пор применяется в некоторых операционных системах, в частности, на мейнфреймах производства IBM.

Мемоизация (запоминание, от англ. memoization (англ.) в программировании) — сохранение результатов выполнения функций для предотвращения повторных вычислений. Это один из способов оптимизации, применяемый для увеличения скорости выполнения компьютерных программ. Перед вызовом функции проверяется, вызывалась ли функция ранее.

Инверсия управления (англ. Inversion of Control, IoC) — важный принцип объектно-ориентированного программирования, используемый для уменьшения зацепления в компьютерных программах. Также архитектурное решение интеграции, упрощающее расширение возможностей системы, при котором поток управления программы контролируется фреймворком.

Сигнату́ра ата́ки (вируса) — характерные признаки компьютерного вируса, используемые для их обнаружения. Большинство современных антивирусов, сканеров уязвимостей и систем обнаружения вторжений (СОВ) используют «синтаксические» сигнатуры, взятые непосредственно из тела атаки (файла вируса или сетевого пакета, принадлежащего эксплойту). Также существуют сигнатуры, основанные на поведении или аномалиях — например, слишком агрессивное обращение к какому-либо сетевому порту на компьютере.

Библиотека среды выполнения (также библиотека времени исполнения; англ. runtime library, RTL) — набор библиотек (модулей) той или иной системы программирования, поставляемых вместе с компилятором, операционной системой или средой разработки программ. Как следует из названия, RTL обеспечивает поддержку функций, предоставляемых системой программирования, во время выполнения программы от начала до её завершения.

В области телекоммуникаций и информатике параллельным соединением называют метод передачи нескольких сигналов с данными одновременно по нескольким параллельным каналам. Это принципиально отличается от последовательного соединения; это различие относится к одной из основных характеристик коммуникационного соединения.

Шейпинг (англ. shaping traffic — придание трафику формы) — ограничение пропускной способности канала для отдельного узла сети ниже технических возможностей канала до узла. Шейпинг обычно используется как средство ограничения максимального потребления трафика со стороны узла сети.

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

Аккумулятор (регистр процессора) — регистр процессора, в котором сохраняются результаты выполнения арифметических и логических команд. Кроме регистра-аккумулятора результаты работы команд могут сохраняться в регистрах общего назначения или в оперативной памяти.

Дескриптор сегмента (в архитектуре x86) — служебная структура в памяти, которая определяет сегмент. Длина дескриптора равна 8 байт .

Вектор атаки — последовательность действий или средство для получения неавторизованного доступа к защищённой информационной системе.

В Unix-подобных операционных системах пользователи идентифицируются идентификаторами пользователя (англ. User identifier, UID).

Итерация в программировании — в широком смысле — организация обработки данных, при которой действия повторяются многократно, не приводя при этом к вызовам самих себя (в отличие от рекурсии). В узком смысле — один шаг итерационного, циклического процесса.

Не путайте с ECC памятью, хотя регистровые модули всегда используют ECC.Регистровая память (англ. Registered Memory, RDIMM, иногда buffered memory) — вид компьютерной оперативной памяти, модули которой содержат регистр между микросхемами памяти и системным контроллером памяти. Наличие регистров уменьшает электрическую нагрузку на контроллер и позволяет устанавливать больше модулей памяти в одном канале. Регистровая память является более дорогой из-за меньшего объема производства и наличия дополнительных.

Объе́ктно-ориенти́рованное проектирование (ООП) — часть объектно-ориентированной методологии, которая предоставляет программистам возможность оперировать понятием «объект», помимо понятия «процедура» при разработке кода.

Файловая система Minix (англ. MINIX file system) — первая файловая система, которая использовалась в операционной системе Minix, ставшей прообразом ядра ОС Linux. Разработана в 1980-х Эндрю Таненбаумом. Она имела массу недостатков: ограничения размера раздела жесткого диска 64 мегабайтами; длина имени файла была ограничена 30 символами и т.д. Она продолжает использоваться для дискет и RAM-дисков.

Флаг, бинарный флаг — что это в программировании

vedro-compota's picture

Флагом в программировании часто называют переменную, которая может принимать только одно из двух значений:

  • или «да» (говорят «флаг поднят»)
  • или «нет» (говорят «флаг опущен»)

— то есть по аналогии с сигнальным флагом на корабле (когда он поднят это значит что-то одно, а когда нет — что-то другое).

В некоторых языках программирования для экономии памяти в качестве флага можно использовать значение логического типа (напр. типа boolean в Паскале).

Флаг направления

Флаг направления — это флаг ЦП, относящийся ко всем процессорам, совместимым с архитектурой Intel x86. Он применяется ко всем инструкциям сборки, которые используют REP префикс (повторяющийся), например MOVS , MOVSD и MOVSW другие. Если флаг направления не установлен, предоставляемые этим инструкциям адреса увеличиваются.

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

Функции библиотеки времени выполнения C, например подпрограммы обработки строк и управления буфером, ожидают, что флаг направления не установлен.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *