Очень даже хорошо видно, если ограничить переходы в пределах страницы текста. А это кстати одна из хороших практик в ассемблере. Если надо прыгать дальше, значит нужно написать по другому.
Правильные имена меток тоже помогают лучше проследить структуру.
Ассемблер читается очень и очень не так как ЯВУ. Отступы конечно можно использовать, некоторые так и делают. Но лучше всё-таки читать по ассемблерному – по вертикали и аккордами, а не отдельными инструкциями. Тогда и вложенность отличается прекрасно.
Конечно нет. Я такое не писал. Опять повторяю, регистры (да и стек тоже) это ресурс, которого нет в языках высокого уровня. И поэтому нельзя рассматривать их с высокоуровневой точки зрения. Ничего не получится.
Вообще, тема о удобочитаемости ассемблерного кода и вообще структурного программирования на ассемблере очень длинная и непростая. В этой статье я рассматриваю микроскопическую долю этой темы. Может быть напишу отдельную статью, где рассмотрю все это более обобщенно.
В соответствии с ним лучше вообще мозгов не иметь.
Это только пока. Но шанс размножится в космосе и населить галактику есть только у нашего вида. Но конечно шанс есть только шанс. Воспользуемся ли мы этим шансом, вот в чем вопрос.
Тот факт, что у вас названия переменных фиксированы
Не надо рассуждать о регистрах как о переменных. Они такими не являются. Переменные в ассемблере, находятся в памятью и имеют нормальные имена. А регистры, это регистры – ресурс которого просто нет в высокоуровневых языков.
Вы просто путаете форму с содержанием. Все эти if-else-while, суть высокоуровневые конструкции, которым не место в ассемблере.
Но суть структурного программирования совсем в другом. Можно программировать структурно и на ассемблере. А можно писать неструктурированный код и на C++.
Нет, вы не поняли. Я имел ввиду что ваш C++ код и мой C++ код, компилируются одинаково. Хотя и отличаются в исходниках. И они компилируются до варианта в статье – с test и использованием второго регистра (код спрятан в спойлере «Конечно, я скомпилировал этот C++ код».
На ассемблер можно и нужно писать сообразно идеи структурного программирования. Структурное программирование далеко не заключается в неиспользованием goto/jmp.
Статья о удобочитаемости, а не о эффективности кода.
Хотя, все эти данные находятся в кеше, так что какой из вариантов будет быстрее, это далеко не простой вопрос. Здесь могут вмешаться и механизмы предсказания переходов.
Но опять – статья о читаемости и понятности, а не о производительности.
Скорее всего это у них в должностной характеристике прописано. Проблема кстати не только в том, что политики нечестные. Проблема в том, чтобы их можно было контролировать и направлять их качества в мирных целях.
Ну-у-у, а зачем вообще рекурсивно??? Нерекурсивный алгоритм в случае намного и читабельнее и компактнее.
А зачем нужно это ограничение «с переменными a и b»? Правильный вопрос будет «Как реализовать алгоритм Евклида?»
Нет.
Очень даже хорошо видно, если ограничить переходы в пределах страницы текста. А это кстати одна из хороших практик в ассемблере. Если надо прыгать дальше, значит нужно написать по другому.
Правильные имена меток тоже помогают лучше проследить структуру.
Ассемблер читается очень и очень не так как ЯВУ. Отступы конечно можно использовать, некоторые так и делают. Но лучше всё-таки читать по ассемблерному – по вертикали и аккордами, а не отдельными инструкциями. Тогда и вложенность отличается прекрасно.
Конечно нет. Я такое не писал. Опять повторяю, регистры (да и стек тоже) это ресурс, которого нет в языках высокого уровня. И поэтому нельзя рассматривать их с высокоуровневой точки зрения. Ничего не получится.
Вообще, тема о удобочитаемости ассемблерного кода и вообще структурного программирования на ассемблере очень длинная и непростая. В этой статье я рассматриваю микроскопическую долю этой темы. Может быть напишу отдельную статью, где рассмотрю все это более обобщенно.
Да, я считаю, что для разных процессоров код надо писать отдельно. Да, «по мотивам», но отдельно.
Это только пока. Но шанс размножится в космосе и населить галактику есть только у нашего вида. Но конечно шанс есть только шанс. Воспользуемся ли мы этим шансом, вот в чем вопрос.
Не надо рассуждать о регистрах как о переменных. Они такими не являются. Переменные в ассемблере, находятся в памятью и имеют нормальные имена. А регистры, это регистры – ресурс которого просто нет в высокоуровневых языков.
Вы просто путаете форму с содержанием. Все эти if-else-while, суть высокоуровневые конструкции, которым не место в ассемблере.
Но суть структурного программирования совсем в другом. Можно программировать структурно и на ассемблере. А можно писать неструктурированный код и на C++.
Нет, вы не поняли. Я имел ввиду что ваш C++ код и мой C++ код, компилируются одинаково. Хотя и отличаются в исходниках. И они компилируются до варианта в статье – с test и использованием второго регистра (код спрятан в спойлере «Конечно, я скомпилировал этот C++ код».
Да, теперь все в порядке.
Но самое интересное, что теперь ваш код компилируется до абсолютно тех же самых инструкции как и мой C++ код.
Теперь надо только разобраться кто из них более удобочитаемый. :)
На ассемблер можно и нужно писать сообразно идеи структурного программирования. Структурное программирование далеко не заключается в неиспользованием goto/jmp.
Ваш код не работает корректно если коренных узлов больше одного. То есть не эквивалентен C++ коду в статье.
Статья о удобочитаемости, а не о эффективности кода.
Хотя, все эти данные находятся в кеше, так что какой из вариантов будет быстрее, это далеко не простой вопрос. Здесь могут вмешаться и механизмы предсказания переходов.
Но опять – статья о читаемости и понятности, а не о производительности.
Эволюционная стратегия вида homo sapiens основана на интеллекте. А растений нет.
Кстати то ли Аристотель, то ли Платон писал, что демократия это когда выбираются случайном образом. А выборы через голосование свойственны олигархиям.
Как по мне, нет таких методов. Точнее есть – эволюционные – кто выжил и размножился, тот и умнее.
А те «объективные» методы, которые вы имеете ввиду, оценивают какие-то другие параметры интеллекта.
Скорее всего это у них в должностной характеристике прописано. Проблема кстати не только в том, что политики нечестные. Проблема в том, чтобы их можно было контролировать и направлять их качества в мирных целях.
Я бы не сказал, хотя популярность такого мнения понятна.
Заметьте, что те которые вы считаете тупыми, тоже думают что большинство населения тупое. И тоже себя не включают в эту группу.