Больной ублюдок это когда:
var = 5;
Для каждого из var Цикл
Если var = 5 Тогда
var = 7 Иначе
var = 5
КонецЕсли;
КонецЦикла;
jmp main
main: ;Главная ветка
mov ax, 5 ;Загружаем в регистр AX пятёрку
cmp ax, 5 ;Сравниваем значение AX и пять
je @eq ;Перепрыгиваем на ветку eq
jmp @neq ;Перепрыгиваем на ветку neq
eq:
mov ax, 7 ;Загружаем в регистр AX семёрку
jmp $ ;Вечный цикл
neq:
mov ax, 5 ;Загружаем в регистр AX пятёрку
jmp $ ;Вечный цикл
Язык Ассемблера.
В приведенном примере действительно комментарии ради комментария.
Но вот несколько строк бы можно было описать одним комментарием:
сравнение регистра в 5 и в случае ошибки присвоим 7.
Но приведенный пример - пример копрокода. Или я что-то не понимаю в компиляции и выполнении такого кода.
Прикол вот в чём: при вызове cmp устанавливаются флаги в зависимости от результата. Команда je перепрыгивает на ветку, только если флаг "равно" установлен. Перепрыгивание произошло, и если не поставить бесконечный цикл, то код будет выполняться дальше (будет выполняться neq). Если же je не сработал, то срабатывает jmp - безусловный переход, который ни от чего не зависит.
При вставке блока на Ассемблере в программы на Паскале мы просто прыгали на последнюю метку, если было нелинейное управление.
Да. Подзабыл всё.
Спасибо.
В случае
if (var == 5)
тоже всегда true.
Точнее только в этом случае будет true. А в первоначальном варианте всегда ошибка компиляции.
Хотя есть языки, в которых под if можно запихнуть любое выражение или переменную - любой объект даёт true, а false и null дают false.
тогда над == а не = да и ваще хуета там какая-то по любому js какой-то, каждый раз когда на него смотрю кажется будто смотрю в сортир сельский, вроде гавно на месте, но гавно какое-то
на хабре как-то разбирали, что все-таки в некоторых языках строку с оператором все-таки необходимо завершать точкой с запятой, хоть компилятор такое и пропускает.
Нет, с начала присвоит значение, потом только булева алгебра )
Во избежание таких ошибок в if принято пихать в обратном порядке (5 = var) , тогда будет ошибка компиляции, ее легче поправить)
// variable i with value 5
// If you want you can change the value
// Be brave
// TODO: Change to const in production
// Do not change the value, other numbers won't compile
var i = 5;
// придётся содержать меня, наших троих детей и собаку, когда
// это пойдет в паблик.
какая расточительность:
/* Я посвящаю весь свой код, всю работу своей жене Дарлин, которой придётся содержать self, наших childs(3) & @, когда это пойдет в паблик. */
if (a.equals(“exit”)) // Если в «а» упал exit
break;





IT-юмор
7.6K поста53.3K подписчиков
Правила сообщества
Не публикуем посты:
1) с большим количеством мата
2) с просьбами о помощи
3) не относящиеся к IT-юмору