Вопросы о дизайне синтаксиса AT&T x86

  1. Может ли кто-нибудь объяснить мне, почему перед каждой константой в синтаксисе AT&T стоит символ «$»?
  2. Почему все регистры имеют символ «%»?
  3. Это просто еще одна попытка заставить меня часто печатать неуместно?
  4. Кроме того, я единственный, кто считает: 16 (% esp) действительно противоречащим здравому смыслу по сравнению с [esp + 16] ?
  5. Я знаю, что он компилируется в одно и то же, но зачем кому-то вводить много символов «$» и «%» без необходимости? - Почему GNU выбрала этот синтаксис по умолчанию?
  6. Другое дело, почему каждой инструкции в синтаксисе at & t предшествует: l? - Я знаю это для размеров операндов, но почему бы просто не дать ассемблеру понять это? (захочу ли я когда-нибудь сделать movl для операндов меньшего размера?)
  7. И последнее: почему аргументы mov инвертируются?

Разве не более логично, что:

eax = 5
mov eax, 5

где, как и в & t:

mov 5, eax
5 = a (? wait what ?)

Примечание: Я не пытаюсь троллить. Я просто не понимаю, какой выбор дизайна они сделали, и пытаюсь понять, почему они сделали то, что сделали.

18
задан greatwolf 18 September 2013 в 04:14
поделиться