Небольшая справка по работе со стеком! - PullRequest
1 голос
/ 25 июня 2011

Инструкции по стеку:

PUSH A
PUSH B
SUB
POP X

Is X = A-B или X = B-A?

Заранее спасибо! :)

Ответы [ 2 ]

2 голосов
/ 25 июня 2011

Теоретически, SUB может быть определено в любом случае (как говорит @delnan).

На практике большинство основанных на стеке языков или наборов инструкций будут следовать соглашениям Обратная польская запись : 5 2 - будет 3 и может рассматриваться в терминах операций стека как push 5; push 2; subtract.Итак, в вашем примере X = A-B будет более типичным ожидаемым результатом.

(Реальный пример: isub в JVM.)

0 голосов
/ 26 июня 2011

Итак, если мне нужно продемонстрировать A*(B-C)/D-E с помощью стека, я делаю это правильно:

PUSH A
PUSH B
PUSH C
SUB
MUL
PUSH D
DIV
PUSH E
SUB

Тогда вершина стека будет иметь то, что оценивает A*(B-C)/D-E. На самом деле это должно быть сделано с регистром формата с нулевым адресом, и я считаю, что использование стека таким образом, как это делается.

Большое спасибо за помощь.

Высоко ценится.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...