Другие языки программирования и технологии
зачем в некоторых языках программирования есть команда, которая ничего не делает???
На пенсии. Успела.
Чтобы неучи (в том числе и пишущие "учебники") могли в Pascal ставить точку с запятой перед end.
А если серьёзно, то пустой оператор в языках высокого уровня нужен в тех случаях, когда синтаксис языка требует наличия оператора, но делать в этом месте ничего не нужно. Типичные примеры:
while waiting(val) do; {тело цикла - пустой оператор; просто ждем, пока waiting вернёт false }
if test then else write('что-то'); {между then и else пустой оператор; говнокод, конечно, но отсутствие действий после then попадается достаточно регулярно}
А если серьёзно, то пустой оператор в языках высокого уровня нужен в тех случаях, когда синтаксис языка требует наличия оператора, но делать в этом месте ничего не нужно. Типичные примеры:
while waiting(val) do; {тело цикла - пустой оператор; просто ждем, пока waiting вернёт false }
if test then else write('что-то'); {между then и else пустой оператор; говнокод, конечно, но отсутствие действий после then попадается достаточно регулярно}
Dima Kainazarov
говнокод из такого примера вполне мог быть полуфабрикатом, когда обработку выполнения условия так и не собрались доделать.
Dima Kainazarov
или, что ещё вероятнее, шаблоном автозаполнения среды.
это что за команда? В системе команд многих процессоров есть команда "нет операции", она нужна или для маленьких пауз в исполнении программы или для служебных целей (особенности команд ветвления и т. п.).
Ну, в Fortran IV была такая CONTINUE. Можно было метку поставить. Мы её использовали, чтобы обозначить конец стандартной конструкции.
Cucerenco Vanea
В Fortran IV оператор CONTINUE (который ничего не делал) обычно использовался в конце цикла, поскольку по синтаксису некоторые операторы делать последними в цикле запрещалось. Но сейчас, например, в C# (и не только) continue используется для перехода на конец цикла, так что оператор этот уже не пустой. Ничто в этом мире не постоянно...
В калькуляторе электроника-57 или как его там нельзя удалить операцию со сдвигом всего кода, вот и применяется пустая операция.
Питон видимо должно расплющить, если после двоеточия не будет операции.
И т. п.
Питон видимо должно расплющить, если после двоеточия не будет операции.
И т. п.
Александр Цой
МК-61, МК-52, не вспоминая более старые.
Ну просто чтоб была
Набор команд многих процессоров содержит инструкцию, цель которой состоит не в том, чтобы изменить состояние какого-либо регистра или ячейки памяти, а в том чтобы затратить определённое число тактов процессора. Для тех процессоров, в которых специальная инструкция отсутствует, NOP имитируется какой-то другой инструкцией с такими параметрами, что регистры и флаги не меняются (например в SPARC-процессорах в качестве NOP рекомендуется инструкция "sethi 0, %g0").
NOP’ы обычно используются:
для создания задержки на определённое время, например, в целях синхронизации с другими устройствами в компьютере. В частности: в микроконтроллерах AVR цифровые порты имеют очень высокое быстродействие, и между коммутацией выходных портов и считыванием входных рекомендуется установить NOP, чтобы схема успела стабилизироваться;
для заполнения памяти программ при выравнивании;
для предотвращения ошибок в аппаратной части процессора;
для передачи управления при конвейерной организации вычислительного процесса;
как заполнитель во время разработки программы;
как заполнитель удалённых инструкций, например, при взломе программ. То есть, проверка регистрационного номера и т. п. заменяется на код, который ничего не делает.
NOP’ы обычно используются:
для создания задержки на определённое время, например, в целях синхронизации с другими устройствами в компьютере. В частности: в микроконтроллерах AVR цифровые порты имеют очень высокое быстродействие, и между коммутацией выходных портов и считыванием входных рекомендуется установить NOP, чтобы схема успела стабилизироваться;
для заполнения памяти программ при выравнивании;
для предотвращения ошибок в аппаратной части процессора;
для передачи управления при конвейерной организации вычислительного процесса;
как заполнитель во время разработки программы;
как заполнитель удалённых инструкций, например, при взломе программ. То есть, проверка регистрационного номера и т. п. заменяется на код, который ничего не делает.
приведи пример
Viktor Brese
команда NOP в ассемблере
очевидно, чтоб ничего не делать какое-то время.
На некоторых процессорах одни команды могут начинаться с любого адреса, другие - только с чётного (кратного 2 байтам), третьи - с кратного 4 байтам и т. д. Длина команд также может быть разной. Для выравнивания очередной команды на нужную границу может применяться команда, которая ничего не делает, но место в памяти занимает. Например, если одна первая команда занимает 1 байт, но вторая должна начинаться с адреса, кратного 4, то между ними надо вставить набор "пустых" команд, чтобы занять "лишние" 3 байта.
Похожие вопросы
- КАКОЙ ЯЗЫК ПРОГРАММИРОВАНИЯ ВЫБРАТЬ НОВИЧКУ КОТОРЫЙ НИФИГА НЕ ПОНИМАЕТ И ХОЧЕТ РАЗРАБАТЫВАТЬ ИГРЫ И СОЦСЕТИ
- Помогите выбрать язык программирования. И ответить на некоторые вопросы.
- Что делает если не хочется учить язык программирования который тебе не нравится
- А вот правельно ли я думают о языках программированиях? И каквообще делают?? (см.внутри)
- Хочу узнать некоторые вопросы по поводу ЯЗЫКОВ ПРОГРАММИРОВАНИЯ
- А какие языки программирования изучали в 80х и на чём вы их изучали?
- Какой язык программирования выбрать для изучения для начинающего ? (внутри)
- И снова про языки программирования ^_^ Поправьте, если я ошибаюсь где-то.
- С какого языка программирования начать?
- Знаю хорошо язык программирования на 70% то что необходимо на начальном этапе. Но не могу решать некоторые задачи.