Страница 1 из 1

Что означает movl?

Добавлено: 27 дек 2016, 12:19
Слива
Здравствуйте. Что означает команда movl? Дайте, пожалуйста, ссылку на описание команды или опишите здесь.

Re: Что означает movl?

Добавлено: 28 дек 2016, 10:32
somewhere
Это команда архитектуры Y86
Как лично я это понимаю: это упрощенная архитектура, основанная на х86 (IA-32) с целью обучения ассемблеру. Регистров там меньше, все они 32-разрядные, есть стек, базовые математические и логические инструкции.
Более простое кодирование команд, хотя и не совсем оптимальное.
http://cs.slu.edu/~fritts/CSCI224_S12/s ... ro-Y86.pdf

Re: Что означает movl?

Добавлено: 28 дек 2016, 10:47
Слива
Спасибо за ответ. Я нашел вчера в Интернет что это команда для Linux(может быть даже буква l в этой команде означает Linux) и это соответствует истине. Эту команду я взял из программы для Linux. Очень сильно непонравилось то, что операнды идет слева направо, а не справа налево, как принято в стандартной архитектуре Intel.

Re: Что означает movl?

Добавлено: 28 дек 2016, 11:00
somewhere
Ну, Linux - это не процессор. Вероятно, этот код компилируется все таки в нормальный IA-32. А если нет (что скорее всего) - значит он генерит свой байткод, который потом в зависимости от процессора этой ОС переводит это в инструкции целевой системы. Типа Java, только более низкоуровневый.

Re: Что означает movl?

Добавлено: 28 дек 2016, 14:21
Слива
Ну, Linux, это не процессор, имеется ввиду компилятор ассемблерного кода для Linux. Что такое IA-32(никак не могу понять)?

Re: Что означает movl?

Добавлено: 28 дек 2016, 15:37
somewhere
Архитектура интел (Intel Architecture), которая из семейства x86. Просто люди все время путают архитектуру и семейство процессоров.

Re: Что означает movl?

Добавлено: 03 апр 2017, 19:12
Сионист
somewhere писал(а):Это команда архитектуры Y86
А что это за архитектура? Что то новое? Или только разрабатываемое?

Re: Что означает movl?

Добавлено: 03 апр 2017, 19:15
Сионист
Слива писал(а):Спасибо за ответ. Я нашел вчера в Интернет что это команда для Linux(может быть даже буква l в этой команде означает Linux) и это соответствует истине. Эту команду я взял из программы для Linux. Очень сильно непонравилось то, что операнды идет слева направо, а не справа налево, как принято в стандартной архитектуре Intel.
Не бывает специальных ассемблерных команд для linux, для винды, или для TR-DOS.

Re: Что означает movl?

Добавлено: 03 апр 2017, 19:25
Сионист
Слива писал(а):Очень сильно непонравилось то, что операнды идет слева направо, а не справа налево, как принято в стандартной архитектуре Intel.
Не в архитектуре, а в ассемблере от intel. Ассемблер at&t собирает тот же самый код в системе команд intel, форматы опкодов ни как с синтаксисом не связаны. Кстати, movl - это разновидность mov для длинных операндов, если все регистры имеют одну разрядность, то суффикс l не имеет смысла. И в неизвестной даже викепедии архитектуре этой команды быть как раз не должно, а в x86 32 она есть. Потому что там есть и тридцатидвухбитные регистры, и накладывающиеся на их младшие слова шестнадцатибитные и даже накладывающиеся на старшие и младшие байты младших слов длинных регистров маленькие восьмибитные. Суффикс b означает байт, w - слово (помните: "в начале было слово и слово было два байта"? Так вот, это оно), l - двойное слово. В intel синтаксисе версия команды определяется по операндам, а если это не возможно, то для конкретизации используется специальная конструкция, входящая в операнд.

Re: Что означает movl?

Добавлено: 03 апр 2017, 19:34
Сионист
somewhere писал(а):Архитектура интел (Intel Architecture), которая из семейства x86. Просто люди все время путают архитектуру и семейство процессоров.
Нет. IA - это x86 32. Тоже интелловская архитектура и даже с оригинальной x86 совместимая, но другая. Потомок x86, а не сама x86. А есть ещё IA 64 (реализована в итаниуме), тоже интелловская архитектура, но ни с x86, ни с x86 32 нифига не совместима.