Что означает movl?
Модератор: Andy
Здравствуйте. Что означает команда movl? Дайте, пожалуйста, ссылку на описание команды или опишите здесь.
Это команда архитектуры Y86
Как лично я это понимаю: это упрощенная архитектура, основанная на х86 (IA-32) с целью обучения ассемблеру. Регистров там меньше, все они 32-разрядные, есть стек, базовые математические и логические инструкции.
Более простое кодирование команд, хотя и не совсем оптимальное.
http://cs.slu.edu/~fritts/CSCI224_S12/s ... ro-Y86.pdf
Как лично я это понимаю: это упрощенная архитектура, основанная на х86 (IA-32) с целью обучения ассемблеру. Регистров там меньше, все они 32-разрядные, есть стек, базовые математические и логические инструкции.
Более простое кодирование команд, хотя и не совсем оптимальное.
http://cs.slu.edu/~fritts/CSCI224_S12/s ... ro-Y86.pdf
It's a long way to the top if you wanna rock'n'roll
Спасибо за ответ. Я нашел вчера в Интернет что это команда для Linux(может быть даже буква l в этой команде означает Linux) и это соответствует истине. Эту команду я взял из программы для Linux. Очень сильно непонравилось то, что операнды идет слева направо, а не справа налево, как принято в стандартной архитектуре Intel.
Ну, Linux - это не процессор. Вероятно, этот код компилируется все таки в нормальный IA-32. А если нет (что скорее всего) - значит он генерит свой байткод, который потом в зависимости от процессора этой ОС переводит это в инструкции целевой системы. Типа Java, только более низкоуровневый.
It's a long way to the top if you wanna rock'n'roll
Ну, Linux, это не процессор, имеется ввиду компилятор ассемблерного кода для Linux. Что такое IA-32(никак не могу понять)?
Архитектура интел (Intel Architecture), которая из семейства x86. Просто люди все время путают архитектуру и семейство процессоров.
It's a long way to the top if you wanna rock'n'roll
А что это за архитектура? Что то новое? Или только разрабатываемое?somewhere писал(а):Это команда архитектуры Y86
Писать можно на чём угодно, но зачем же так себя ограничивать? Пиши на c.
Не бывает специальных ассемблерных команд для linux, для винды, или для TR-DOS.Слива писал(а):Спасибо за ответ. Я нашел вчера в Интернет что это команда для Linux(может быть даже буква l в этой команде означает Linux) и это соответствует истине. Эту команду я взял из программы для Linux. Очень сильно непонравилось то, что операнды идет слева направо, а не справа налево, как принято в стандартной архитектуре Intel.
Писать можно на чём угодно, но зачем же так себя ограничивать? Пиши на c.
Не в архитектуре, а в ассемблере от intel. Ассемблер at&t собирает тот же самый код в системе команд intel, форматы опкодов ни как с синтаксисом не связаны. Кстати, movl - это разновидность mov для длинных операндов, если все регистры имеют одну разрядность, то суффикс l не имеет смысла. И в неизвестной даже викепедии архитектуре этой команды быть как раз не должно, а в x86 32 она есть. Потому что там есть и тридцатидвухбитные регистры, и накладывающиеся на их младшие слова шестнадцатибитные и даже накладывающиеся на старшие и младшие байты младших слов длинных регистров маленькие восьмибитные. Суффикс b означает байт, w - слово (помните: "в начале было слово и слово было два байта"? Так вот, это оно), l - двойное слово. В intel синтаксисе версия команды определяется по операндам, а если это не возможно, то для конкретизации используется специальная конструкция, входящая в операнд.Слива писал(а):Очень сильно непонравилось то, что операнды идет слева направо, а не справа налево, как принято в стандартной архитектуре Intel.
Писать можно на чём угодно, но зачем же так себя ограничивать? Пиши на c.
Нет. IA - это x86 32. Тоже интелловская архитектура и даже с оригинальной x86 совместимая, но другая. Потомок x86, а не сама x86. А есть ещё IA 64 (реализована в итаниуме), тоже интелловская архитектура, но ни с x86, ни с x86 32 нифига не совместима.somewhere писал(а):Архитектура интел (Intel Architecture), которая из семейства x86. Просто люди все время путают архитектуру и семейство процессоров.
Писать можно на чём угодно, но зачем же так себя ограничивать? Пиши на c.