Почему синтаксис ассемблера Intel dest, src?

It seems to me that the logical way to order operands for asm operations is src, dest, since English generally prescribes from here to there rather than the reverse. This is AT&T syntax, and is rarely used (or at least, I've never had occasion to program with it). The opposite is Intel syntax, and is widely used. The names correspond to the companies which nominally originated them. [1]

Can anyone provide a reason as to why Intel syntax was accepted as the standard, and indeed why this ordering was developed and used in the first place? Am I wrong in my assumption that AT&T syntax is more natural?

0
nl ja de
Dunno, я нахожу синтаксис Intel более естественным, и AT & T будет несколько тупым ... :-)
добавлено автор Brian Knoblauch, источник
a = 1 (dest, src)
добавлено автор nrz, источник
Зачем? Кто знает?
добавлено автор John Dvorak, источник
Я считаю, что арифметическая часть указателя AT & T не читается - синтаксис Intel намного лучше на данный момент. Что касается заказа оператора - я безразличен.
добавлено автор John Dvorak, источник
Может быть, есть целая куча исторических доказательств и смысла для этого, но я просто хочу указать, что, хотя на английском и большинстве языков мы идем «оттуда туда», математика действительно использовала «Let X be ...» довольно долгое время, прежде чем comuters даже родились. Таким образом, идея не совсем новая, и я бы сказал, что математическое обозначение имеет к этому какое-то отношение.
добавлено автор Kimitsu Desu, источник
@ william.berg хорошо, некоторые языки ассемблера используют set вместо mov. я думаю, это произвольно. почему бы не «settosum» вместо «добавить»? во всяком случае, говоря о заказе, он может также иметь какое-то отношение к польской нотации. Польский/обратный польский был (и до сих пор) довольно популярен в языках минимализма, поэтому они, возможно, выбрали одно из этих намеренно.
добавлено автор Kimitsu Desu, источник
@KimitsuDesu Я видел этот аргумент, и я спрашиваю: зачем вызывать операцию mov , сокращение от «move»? Почему бы не let или установить , то?
добавлено автор william.berg, источник

2 ответы

Может ли кто-нибудь объяснить причину того, почему синтаксис Intel был принят в качестве стандартного

Ну, это не стандарт. Нет стандарта ISO или ECMA, который предписывает синтаксис сборки. Нотация Intel много используется по той простой причине, что она хорошо документирована в руководствах для процессоров Intel, а Intel - очень успешная компания, которая разработала и продала процессоры lot .

That can't be said for AT&T. It was a telephone company, never did much of anything in processor design and no longer even exists. They made some pretty bone-headed decisions that put them out of business. The trade name was bought by another telephone company, SBC, which then renamed itself. The famous Bell Labs, the originator of Unix and C, and the syntax, was spun off as another company named Lucent. No longer around either, bought by Alcatel. Who owns Unix these days is a bit unclear, lots of law suits, but Novell seems to be ahead.

Операндский приказ - это всего лишь очередная дискуссия о малой энтриде и дебатах. Учитывая выбор из двух, один всегда будет считаться ошибочным другим.

5
добавлено
Извините за неточное использование условий. Intel против AT & T является более горячей темой среди программистов asm, чем я понял: forums.xkcd .com/viewtopic.php? f = 40 & t = 19558 , хотя обычно это касается других различий синтаксиса. +1 для уподобления другим святым войнам.
добавлено автор william.berg, источник

Обоснование C-стиля для порядка dest, src : оно похоже на порядок операндов в выражении, например

mov dest, src

выглядит как

dest = src

или

add dest, src

выглядит как

dest += src

(поэтому эти инструкции напоминают визуально то, что они на самом деле делают.) Это, вероятно, логическое объяснение.

4
добавлено
имея dest слева и src справа, выходит за пределы C или любого языка программирования. Очень естественно, что dest, src в сборке, src, dest является болезненным и трудным в использовании и понимании, потому что по крайней мере для операций alu это неверный путь по сравнению с общей математической нотацией a = b + c add a, b, c
добавлено автор old_timer, источник
hmm сделал C apper до этого стандартного заказа на сборку Intel?
добавлено автор Kimitsu Desu, источник
@KimitsuDesu Это на самом деле не имеет значения (я не знаю, было ли это) - большинство языков программирования, которые следуют этому соглашению по математическим обозначениям (которое иногда называют «C-style»), предлагают такую ​​логику.
добавлено автор user529758, источник