Особый вид информации в виде двоичных кодов, воспринимаемых процессором как команды для выполнения

Обновлено: 21.11.2024

"Программное обеспечение" — это общая категория кода, работающего на оборудовании. Если аппаратное обеспечение — это пианино, то программное обеспечение — это музыка. Обычный случай — это «программа», такая как Firefox — программное обеспечение, которое вы запускаете на своем компьютере для решения конкретной проблемы. Компьютер может запускать несколько программ одновременно и несет ответственность за разделение их памяти.

ЦП понимает низкоуровневый язык "машинного кода" (также известный как "собственный код"). Язык машинного кода встроен в конструкцию аппаратного обеспечения ЦП; это не то, что можно изменить по желанию. Каждое семейство совместимых ЦП (например, очень популярное семейство Intel x86) имеет свой собственный уникальный машинный код, несовместимый с машинным кодом других семейств ЦП.

Что такое программа/приложение?

  • Что такое программа или приложение?
    - напр. Фаерфокс
  • Firefox состоит из миллионов инструкций машинного кода.
    - Запускается сверху вниз (прямо как Javascript!)
    - Появляется окно Firefox (первые 1000 инструкций)
    - Появляются его меню (следующие 1000)
    - Курсор мигает в ожидании ввода
  • Инструкции, при запуске которых выполняются действия "Firefox".
  • Firefox.exe — это файл в файловой системе размером 80 МБ
    («.exe» — это соглашение Windows для названия файла программы)
  • Файл Firefox.exe в основном состоит из инструкций машинного кода.
  • Каждая инструкция имеет размер, скажем, 4 байта
  • Firefox.exe размером 80 МБ содержит около 20 миллионов машинных инструкций.

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

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

Как работает программа?

  • ЦП запускает «цикл выборки/выполнения»
    -выбирает одну инструкцию в последовательности,
    -выполняет (запускает) эту инструкцию, например выполнить сложение
    -выбрать следующую инструкцию и т. д.
  • Запустить программу = запустить ЦП, работающий с его 1-й инструкцией,
    он прогоняет весь машинный код, запускает программу,
    программа будет иметь такие инструкции, как "вернуться к шагу 3", чтобы сохранить ее работает
  • Сверхпростые инструкции машинного кода выполняются со скоростью 2 миллиарда операций в секунду.

ЦП выполняет инструкции, используя цикл «выборка-выполнение»: ЦП получает первую инструкцию в последовательности, выполняет ее (добавляя два числа или что-то еще), затем выбирает следующую инструкцию и выполняет ее и так далее. Некоторые инструкции влияют на порядок, в котором ЦП выполняет последовательность инструкций. Например, инструкция может указать ЦП вернуться к более ранней точке в последовательности инструкций (циклы реализованы таким образом) или пропустить следующую инструкцию, если определенное условие истинно (условия if реализованы таким образом). .

Как начинается программа?

  • Файл Firefox.exe содержит свои инструкции (в файловой системе)
  • Чтобы запустить Firefox.exe:
    -Каждая программа получает свою собственную область ОЗУ.
    - Область ОЗУ содержит код программы и данные, с которыми она манипулирует.
    - Байты инструкций копируются из хранения в ОЗУ
    -ЦП получает указание начать работу с первой инструкции
    -Теперь программа работает!

В файловой системе такой файл, как Firefox.exe, просто содержит байты инструкций машинного кода, из которых состоит программа («.exe» — это соглашение Windows, обозначающее файл как программу). Каждая инструкция машинного кода занимает примерно 4 байта, а вся программа представляет собой просто огромную последовательность инструкций.

Когда пользователь дважды щелкает файл программы, чтобы запустить его, по сути, блок байтов инструкций для программы копируется в ОЗУ, а затем ЦП получает указание начать работу с первой инструкции в этой области ОЗУ.

Что запускает Firefox? «Операционная система»

  • Как запустить Firefox?
  • "Операционная система"
    -e.g.Windows, Linux, Android, iOS
  • Операционная система = управление
  • Набор управляющих программ, которые управляют компьютером.
  • Операционная система запускается при первом включении компьютера
  • Управление запуском/остановкой программ
  • Управление оперативной памятью
  • Управление постоянным хранилищем
  • Компьютеры могут запускать несколько программ одновременно
  • Операционная система отслеживает информацию для каждой программы и распределяет ресурсы (например, ОЗУ) между программами.

"Операционная система" компьютера подобна первой управляющей программе, которая начинает работать при первом включении компьютера ("загружается"). Операционная система играет невидимую административную и бухгалтерскую роль за кулисами. Когда ноутбук или телефон запускается, операционная система обычно приводит все в порядок, а затем запускает программу «Проводник файлов», которая отображает доступные программы, меню и т. д., которые показывают пользователю, что доступно, позволяя пользователю перемещаться по программам и запускать их.< /p>

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

Вспомните, что файл .exe или что-то еще — это, по сути, просто файл с инструкциями машинного кода. Когда вы дважды щелкаете программу, операционная система «запускает» программу, выполняя вспомогательные действия по выделению области памяти в ОЗУ для программы, загружая первый раздел машинного кода программы в эту память и, наконец, направляя CPU для запуска этого кода.

Хотите улучшить этот вопрос? Добавьте подробности и уточните проблему, отредактировав этот пост.

Закрыт 4 года назад.

Я работаю с языками высокого уровня и пытаюсь понять иерархию языков низкого уровня.

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

Все ли двоичные коды одинаковы? Это означает, что набор двоичных инструкций будет выполнять одну и ту же команду на каждом отдельном процессоре или микропроцессоре?

Спасибо всем. Я изучал этот вопрос и нигде не могу найти четкого ответа.

Мне ответы кажутся довольно ясными, например, если вы посмотрите на MIPS и x86, их машинный код совершенно различен.

Спасибо, Гарольд, я просто не понимаю большую часть этого материала и до сих пор не уверен, что такие языки, как MIPS или IA-32, на самом деле являются машинным кодом или ассемблером. Я не изучаю это подробно, просто пытаюсь понять основные понятия.

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

"Сборка" – это удобочитаемая форма двоичного кода. Каждая процессорная архитектура имеет свой двоичный код, как известно, созданный ее разработчиками. Это известно как «машинный язык». Поскольку двоичный код (машинный язык) сложен для программирования, разработчики также создают мнемоники для этих двоичных кодов операций (кодов операций), и это известно как «язык ассемблера». В остальном они одинаковы. Ассемблер просто переводит мнемоники языка ассемблера непосредственно в двоичные биты, соответствующие тем же самым инструкциям. Так что нет, не все архитектуры одинаковы.

Я понимаю, что это может немного сбить с толку новичка в этой области, но я не уверен, что вы провели собственное исследование, прежде чем задать вопрос. Например, в Википедии есть довольно четкий ответ на этот вопрос. Я не понимаю, как вы могли прочитать эту статью и все еще быть в замешательстве. А Википедия едва ли считается «исследованием».

3 ответа 3

Нет, ARM выполняет инструкции ARM, процессор MIPS выполняет MIPS и так далее. Существует много разных несовместимых наборов инструкций. Термин, который вы можете использовать, — это машинный код или машинный язык, который представляет собой двоичный код, биты, которые заставляют процессор работать. Язык ассемблера в идеале представляет собой набор удобочитаемых мнемоник один к одному, текстовый язык, который легче программировать и читать, чем машинный код. Ассемблер берет язык ассемблера и превращает его в машинный код.

возьмите эту простую функцию

Возможна реализация руки

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

который является неоптимизированной версией того же, он также реализует код C, который мы просили, чтобы он просто был. не оптимизирован. Разница между -O2 и -O0 в командной строке.

версия x86 нашей простой функции

один, который я хотел бы добавить, чтобы узнать, знают ли люди, что это такое

и обратно в руку, рука имеет 16-битный набор инструкций, называемый большим пальцем

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

Примечание: я говорю компилировать на ассемблере, это очень распространенная вещь, у вас уже есть ассемблер и компоновщик, компиляция в машинный код трудно читается, поэтому авторам компилятора сложно отлаживать, нет причин делать это когда у тебя уже есть ассемблер. Вот почему они называются наборами инструментов. Очень часто, когда вы запускаете gcc -o hello hello.c, запускаются МНОГИЕ программы, просто сам gcc cmopiler представляет собой несколько программ, которые выполняются по порядку, оставляя временные файлы для следующей программы, затем, в конце концов, вызывается ассемблер (если вы не указали -S, и он просто останавливается на языке ассемблера), чтобы собрать его в объект, затем gcc очищает временные файлы. Опять же довольно часто, поэтому это называется цепочкой инструментов, от компилятора до ассемблера и компоновщика, цепочкой последовательностей программ, которые запускаются по порядку.

Например, с помощью gcc, если я ввел --save-temps в командную строку

а затем он создает объект, который является двоичным, мы можем использовать objdump, чтобы увидеть, как указано выше.

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

ИТ-руководители начали год с ветерком в спину, опираясь на инвестиции, сделанные во время пандемии, и вновь сосредоточившись на .

Определения метавселенной различаются, как и прогнозы относительно того, когда она появится. Но умные ИТ-директора должны ознакомиться с .

Компании, привлекающие украинских программистов, работают над переводом сотрудников, желающих переехать. Технологические компании в долгосрочной перспективе могут .

Скомпрометированный аккаунт сотрудника в HubSpot привел к взлому клиентов нескольких компаний в индустрии криптовалют.

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

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

DevOps, NetOps и NetSecOps. о боже! У этих ИТ-концепций есть свои отличия, но, в конце концов, они — одна семья. .

Cradlepoint и Extreme Networks объединят маршрутизаторы 5G первой компании с сетевой структурой второй для создания беспроводной глобальной сети 5G.

Израильский стартап OneLayer запустился незаметно с начальным финансированием в размере 8,2 млн долларов США и программной платформой для защиты Интернета вещей.

Intel оптимистично настроена, что ее дорожная карта процессоров может вернуть компанию на первое место, но компания сталкивается со сложной перспективой .

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

Недавние достижения в технологиях центров обработки данных и кадровых моделях отражают стремление организаций к повышению гибкости ИТ, .

Snowflake продолжает расширять предложения своей отраслевой вертикальной платформы, помогая пользователям из разных сегментов рынка собирать деньги.

Платформа RKVST поддерживает несколько типов приложений для работы с данными на блокчейне, включая безопасный обмен данными SBOM для обеспечения кибербезопасности.

Законы о конфиденциальности данных во всем мире постоянно меняются. Эти 10 элементов помогут организациям идти в ногу со временем .

Несмотря на то, что были приложены все усилия для соблюдения правил стиля цитирования, могут быть некоторые расхождения. Если у вас есть какие-либо вопросы, обратитесь к соответствующему руководству по стилю или другим источникам.

Наши редакторы рассмотрят то, что вы отправили, и решат, нужно ли пересматривать статью.

двоичный код, код, используемый в цифровых компьютерах, основанный на двоичной системе счисления, в которой есть только два возможных состояния, выключено и включено, обычно обозначаемое 0 и 1. В то время как в десятичной системе, использующей 10 цифр, каждое позиция цифры представляет степень числа 10 (100, 1000 и т. д.), в двоичной системе каждая позиция цифры представляет степень числа 2 (4, 8, 16 и т. д.). Двоичный кодовый сигнал представляет собой серию электрических импульсов, которые представляют собой числа, символы и операции, которые необходимо выполнить. Устройство, называемое часами, посылает регулярные импульсы, а такие компоненты, как транзисторы, включаются (1) или выключаются (0), чтобы пропускать или блокировать импульсы. В двоичном коде каждое десятичное число (0–9) представлено набором из четырех двоичных цифр или битов.Четыре основные арифметические операции (сложение, вычитание, умножение и деление) могут быть сведены к комбинациям основных булевых алгебраических операций над двоичными числами. (См. в таблице ниже показано, как десятичные числа от 0 до 10 представлены в двоичном формате.)

Десятичные числа, представленные двоичными цифрами

Редакторы Британской энциклопедии Эта статья была недавно отредактирована и обновлена ​​Адамом Августином.

Редакторы или текстовые редакторы — это программы, которые позволяют пользователю создавать и редактировать текстовые файлы. В области программирования термин «редактор» обычно относится к редакторам исходного кода, которые включают множество специальных функций для написания и редактирования кода. Блокнот, Wordpad — некоторые из распространенных редакторов, используемых в ОС Windows, а vi, emacs, Jed, pico — редакторы в ОС UNIX. Функции, обычно связанные с текстовыми редакторами: перемещение курсора, удаление, замена, вставка, поиск, поиск и замена, сохранение и т. д.

  1. Редактор строк: здесь вы можете редактировать только одну строку за раз или целое число строк. У вас не может быть свободной последовательности символов. Он позаботится только об одной строке.
    Пример: телетайп, эдлин, теко
  2. Потоковые редакторы. В редакторах этого типа файл обрабатывается как непрерывный поток или последовательность символов, а не номеров строк, что означает, что здесь вы можете вводить абзацы.
    Пример: редактор Sed в UNIX
  3. Экранные редакторы: в этом типе редакторов пользователь может видеть курсор на экране и может легко выполнять операции копирования, вырезания и вставки. Использовать указатель мыши очень просто.
    Пример: vi, emacs, Блокнот
  4. Текстовый процессор. Преодолев ограничения экранных редакторов, он позволяет использовать определенный формат для вставки изображений, файлов, видео, использования шрифта, размера и стиля. Основное внимание уделяется естественному языку.
  5. Редактор структуры. Редактор структуры ориентирован на языки программирования. Он предоставляет функции для написания и редактирования исходного кода.
    Пример: IDE Netbeans, gEdit.

Некоторые другие редакторы:

  • Полноэкранные редакторы. На компьютерах полноэкранный редактор или редактор, не отвлекающий внимание, – это текстовый редактор, который занимает весь экран с целью отстранения пользователя от ОС и других приложений. Это помогает пользователю сосредоточиться только на письме и не отвлекаться на другие приложения и загроможденный интерфейс. Часто полноэкранные редакторы имеют темный фон и текстовое поле со светлым текстом. Они включают в себя настраиваемые интерфейсы и такие функции, как подсчет слов.
    Пример: Acme, Coderoom, FocusWriter
  • Многооконный редактор. Многооконный редактор позволяет работать с несколькими файлами одновременно, а также вырезать и вставлять текст из одного файла в другой путем извлечения и вставки. Две фундаментальные концепции, лежащие в основе многооконных редакторов, — это буфер и окна.

Буфер: Буфер содержит текст для редактирования. Текст может исходить из файла или совершенно нового текста, который вы хотите записать в файл. С файлом связан только один буфер.

Процесс редактирования

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

Вышеуказанные шаги включают фильтрацию, форматирование и перемещение.

  • Форматирование: отображение на экране дисплея.
  • Фильтрация: выявление основного/важного подмножества.
  • Путешествие: поиск интересующей области.

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

  • Устройства ввода. Устройства ввода обычно делятся на устройства ввода текста, кнопочные устройства и устройства локатора. Текстовое устройство — клавиатура. Кнопочные устройства представляют собой специальные функциональные клавиши. Устройства локатора включают мышь. Существуют также специальные голосовые устройства, которые записывают в текст все, что вы говорите.
  • Устройства вывода:мониторы TFT, принтеры, телетайпы, технология электронно-лучевой трубки, усовершенствованные ЭЛТ-терминалы.
  • Язык взаимодействия:Язык взаимодействия может быть ориентирован на набор текста или текстовую команду, а также может быть пользовательским интерфейсом, ориентированным на меню. Язык взаимодействия, ориентированный на набор текста или текстовой команды, очень стар, используется в самых старых редакторах, в виде команд, использования функций и клавиш управления и т. д. Интерфейс, ориентированный на меню, имеет меню с набором множественного выбора текстовых строк. Область отображения ограничена, и пользователь может включать и выключать меню.

Структура редактора

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

Компонент редактирования — это модуль, отвечающий за задачи редактирования. Текущая область редактирования определяется текущим указателем редактирования, связанным с компонентом редактирования. При выполнении команды редактирования компонент редактирования вызывает фильтр редактирования, генерирует новый буфер редактирования. Буфер редактирования содержит документ, который нужно отредактировать в текущем местоположении указателя редактора.
При просмотре документа начало просматриваемой области определяется текущим указателем просмотра. Компонент просмотра — это набор модулей, используемых для просмотра следующего представления. Текущий просмотр можно настроить или сбросить в зависимости от последней операции.
Когда отображение необходимо обновить, компонент просмотра вызывает фильтр просмотра, создает новый буфер и содержит документ для просмотра с использованием текущего буфера просмотра. Затем буфер просмотра передается компоненту дисплея, который создает отображение путем отображения буфера. Буферы редактирования и просмотра могут быть идентичными или полностью не пересекаться. Буферы редактирования и просмотра также могут частично перекрываться или содержаться один внутри другого. Компонент редактора взаимодействует с документом от пользователя на двух уровнях: оперативной памяти и файловой системы диска.

Читайте также:

десятичное двоичное преобразование
0 0 0 ( 2 0 )
1 1 1 ( 2 0 )
2 10 1 ( 2 1 ) + 0 ( 2 0 )
3 11 1 ( 2 1 ) + 1 ( 2 0 )
4 100 1 ( 2 2 ) + 0 ( 2 1 ) + 0 ( 2 0 )
5 101 1 ( 2 2 ) + 0 ( 2 1 ) + 1 ( 2 0 )
6 110 1 (2 2) + 1 (2 1) + 0 (2 0)
7 111 1 (2 2) + 1 (2 1) + 1 (2 0)
8 1000 1 ( 2 3 ) + 0 ( 2 2 ) + 0 ( 2 1 ) + 0 ( 2 0 )
9 1001 1 ( 2 3 ) + 0 ( 2 2 ) + 0 ( 2 1 ) + 1 ( 2 0 )
10 1010 1 ( 2 3 ) + 0 ( 2 2 ) + 1 ( 2 1 ) + 0 ( 2 0 )