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

Низкоуровневое программирование портов, микроконтроллеров и т.д.

Модератор: Andy

Ответить
Слива
Сообщения: 133
Зарегистрирован: 19 мар 2016, 10:15

27 дек 2016, 12:19

Здравствуйте. Что означает команда movl? Дайте, пожалуйста, ссылку на описание команды или опишите здесь.
Аватара пользователя
somewhere
Сообщения: 1837
Зарегистрирован: 31 авг 2006, 17:14
Откуда: 71 RUS
Контактная информация:

28 дек 2016, 10:32

Это команда архитектуры Y86
Как лично я это понимаю: это упрощенная архитектура, основанная на х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
Слива
Сообщения: 133
Зарегистрирован: 19 мар 2016, 10:15

28 дек 2016, 10:47

Спасибо за ответ. Я нашел вчера в Интернет что это команда для Linux(может быть даже буква l в этой команде означает Linux) и это соответствует истине. Эту команду я взял из программы для Linux. Очень сильно непонравилось то, что операнды идет слева направо, а не справа налево, как принято в стандартной архитектуре Intel.
Аватара пользователя
somewhere
Сообщения: 1837
Зарегистрирован: 31 авг 2006, 17:14
Откуда: 71 RUS
Контактная информация:

28 дек 2016, 11:00

Ну, Linux - это не процессор. Вероятно, этот код компилируется все таки в нормальный IA-32. А если нет (что скорее всего) - значит он генерит свой байткод, который потом в зависимости от процессора этой ОС переводит это в инструкции целевой системы. Типа Java, только более низкоуровневый.
It's a long way to the top if you wanna rock'n'roll
Слива
Сообщения: 133
Зарегистрирован: 19 мар 2016, 10:15

28 дек 2016, 14:21

Ну, Linux, это не процессор, имеется ввиду компилятор ассемблерного кода для Linux. Что такое IA-32(никак не могу понять)?
Аватара пользователя
somewhere
Сообщения: 1837
Зарегистрирован: 31 авг 2006, 17:14
Откуда: 71 RUS
Контактная информация:

28 дек 2016, 15:37

Архитектура интел (Intel Architecture), которая из семейства x86. Просто люди все время путают архитектуру и семейство процессоров.
It's a long way to the top if you wanna rock'n'roll
Аватара пользователя
Сионист
Сообщения: 1077
Зарегистрирован: 31 мар 2014, 06:18

03 апр 2017, 19:12

somewhere писал(а):Это команда архитектуры Y86
А что это за архитектура? Что то новое? Или только разрабатываемое?
Писать можно на чём угодно, но зачем же так себя ограничивать? Пиши на c.
Аватара пользователя
Сионист
Сообщения: 1077
Зарегистрирован: 31 мар 2014, 06:18

03 апр 2017, 19:15

Слива писал(а):Спасибо за ответ. Я нашел вчера в Интернет что это команда для Linux(может быть даже буква l в этой команде означает Linux) и это соответствует истине. Эту команду я взял из программы для Linux. Очень сильно непонравилось то, что операнды идет слева направо, а не справа налево, как принято в стандартной архитектуре Intel.
Не бывает специальных ассемблерных команд для linux, для винды, или для TR-DOS.
Писать можно на чём угодно, но зачем же так себя ограничивать? Пиши на c.
Аватара пользователя
Сионист
Сообщения: 1077
Зарегистрирован: 31 мар 2014, 06:18

03 апр 2017, 19:25

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

03 апр 2017, 19:34

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