Особый вид информации в виде двоичных кодов, воспринимаемых процессором как команды для выполнения
Обновлено: 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 представлены в двоичном формате.)
десятичное | двоичное | преобразование |
---|---|---|
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) | tr>
8 | 1000 | 1 ( 2 3 ) + 0 ( 2 2 ) + 0 ( 2 1 ) + 0 ( 2 0 ) td > |
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 ) |