Size: a a a

Ассемблер

2020 May 04

AG

Alexander Galileev in Ассемблер
Я скорее про базовое желание/причину писать программы именно на языке ассемблера. Просто посчитать/нарисовать можно и на более удобных языках.
источник

AG

Alexander Galileev in Ассемблер
Ладно, если это сильно личное, можешь не отвечать.
источник

A

Aiwan ╭∩╮ (òÓ,) ╭∩╮... in Ассемблер
нравится грызть кактус
источник

AG

Alexander Galileev in Ассемблер
Понимаю, понимаю. (:
источник

楽園松本 in Ассемблер
Alexander Galileev
На самом деле это вообще нонсенс - если производитель не публикует коды команд, то как быть разработчикам, к примеру, компиляторов? А операционных систем? Единственно, я слышал, что есть незадокументированные команды. Возможно их кто-то вот так перебором и нашёл.
Я полагаю, сейчас наблюдается тенденция у разработчиков железа не распространять информацию о своём железе в принципе. Давать некий конструктор, например набор готовых библиотек, и предлагать пользоваться только им.
источник

楽園松本 in Ассемблер
Кроме того, количество машинных инструкций настолько велико, что я не представляю человека, который мог бы их охватить своим разумом. То есть, изначально инструкции процессора ориентированы не на программиста, а на генерацию конечного кода компилятором.
источник

楽園松本 in Ассемблер
И в-третьих, похоже, что создатели процессоров при их разработке уже имеют в виду существование операционных систем, например Виндоус. В старом мире такого не было: делали процессор без оглядки на существующие софтовые решения, пусть производители софта сами адаптируются к нашему железу. Сейчас это выражается в том, что программирование на асме под ОС не только экономически нецелесообразно, но и практически невозможно, тк асмовую программу для соответствующего низкого уровня ты просто не сможешь запустить. А низкий уровень программирования предполагает, что ты работаешь в Микрософте :)
источник

楽園松本 in Ассемблер
Я ещё раз хотел бы выразить свою позицию: программирование ВЫЗОВОВ СИСТЕМНЫХ ФУНКЦИЙ из-под асма делать неразумно, для этого есть удобные языки высокого уровня, даже скриптовые языки. Вся прелесть асма раскрывается на глубинном уровне функционирования ОС. И как раз такие вещи не только не документируются, но хранятся производителями софта в тайне.
источник

楽園松本 in Ассемблер
Лично я являюсь поклонником идеи уйти от ОС. Пусть отдельный компьютер станет специализированной станцией для решения каких-либо задач.
источник

AG

Alexander Galileev in Ассемблер
Ассемблер нужен не только для того, чтобы писать для него прикладные программы. Это как раз-таки глубоко вторично, причём крэкинг/реверс/вирусология и прочие области применения, которые в настоящий исторический момент упоминают как ассемблерные, в данном ракурсе являются вторичным тоже. Машинные коды и ассемблерные мнемоники лежат в основе всего ПО, даже если оно написано на высокоуровневом языке (или напрограммировано мышкой).

В Linux компилятор GCC выполняет вовсе не преобразование кода на Си или Си++ в машинные коды - он преобразует высокоуровневый код в код на языке ассемблера. А потом вызывает GAS (Gnu assembler) который уже перегоняет его в машинные коды (если быть точным, то в объектный файл; затем тот же GCC вызывает редактор связей, который делает из объектного файла исполняемый). Внимание, вопрос: если мы не знаем ни машинных кодов команд, ни их ассемблерных мнемоник - как нам написать компилятор? Никак. А без компилятора - как преобразовать программу в исполняемый файл? (Компилятор можно заменить на интерпретатор, это не принципиально).

Поскольку ОС - тоже компилируемая программа, то замечание выше о компиляторах работает и для них. Но есть ещё один момент. Некоторые куски кода ОС можно написать только на ассемблере - например, обработчики прерываний. На Си такого не напишешь, нужно выполнять определённые манипуляции с регистрами. Как это сделать, если производитель скрыл операции процессора? Ответ: тоже никак.

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

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

AG

Alexander Galileev in Ассемблер
Возможно, под "производители скрывают" ты имел в виду производителей видеокарт и прочей периферии. Да, тут есть такое - проприетарные драйвера, проприетарные прошивки, "библиотечные" инструменты разработчика. Например, в Linux есть определённая проблема с драйверами Nvidia, на эту тему есть даже мем с Линусом, который показывает средний палец со словами "fuck Nvidia". Но вообще говоря, мнемоники и опкоды - это не про периферию, это исключительно про процессор. Периферия делает то, что ей приказывает процессор. Система, в которой интерфейс процессора скрыт от разработчиков компиляторов (следовательно, и всех программ), работать не сможет. А с проприетарными драйверами проблема тоже решаема - реверсим и делаем свои драйвера. С Nvidia так в Linux и поступили. Да, не всегда идеально, но - работает.
источник

AG

Alexander Galileev in Ассемблер
источник

VG

Volodymyr Gumnytskiy in Ассемблер
здесь разобрано только команду mov, а надо 4 команды: 1-передача данных, 1 арифметическая, 1 условная, 1 управления адресацией команд.
источник

VG

Volodymyr Gumnytskiy in Ассемблер
да?
источник

VG

Volodymyr Gumnytskiy in Ассемблер
или mov это и есть все 4 команды?
источник

VG

Volodymyr Gumnytskiy in Ассемблер
умаляю, помогите разобраться и доделать
источник

VG

Volodymyr Gumnytskiy in Ассемблер
я уже от 12 часов разбираюсь и ни одной строчки кода не написал
источник

VG

Volodymyr Gumnytskiy in Ассемблер
я за плачу
источник

🐖

🐖Глебка💨 in Ассемблер
Не плачь
источник

VG

Volodymyr Gumnytskiy in Ассемблер
источник