Может ли ассемблер использовать инструкцию movw на 1-байтовом регистре? - PullRequest
0 голосов
/ 03 сентября 2018

Существует 4 типа mov инструкции: movb, movw, movl.
Суффикс b, w, l означает размер исходного регистра.

Однако при сборке я обнаружил проблему с этими суффиксами.
См. Пример ниже.

 .global main
 main:
  movb %ss, (%ecx) # ==> assemble (X)
  movw %ss, (%ecx) # ==> assemble (O)

Даже если исходный регистр %ss имеет размер 1 байт,

1-байтовая инструкция movb %ss, (%ecx) сборка ошибка ,
2-байтовая инструкция movw %ss, (%ecx) сборка последующая .

Почему это происходит?
Это просто ошибка linux as? 1033 *

1 Ответ

0 голосов
/ 03 сентября 2018

Регистр ss имеет длину 16 бит (2 байта), поэтому movw действительно верен, а movb по праву отклонен.

В общем случае, если нет операнда регистра, вы можете просто пропустить суффикс размера и позволить ассемблеру определить его. Ассемблер обычно очень хорошо с этим справляется.

...