2013-11-18 1 views
0

Compute нуль-, одно-, двух- и трех адресных машин по написанию программ для вычисления:Сравнение нескольких адресных машин путем написания программ для вычисления уравнения?

X = (B - C)/(A * D) 

Для каждого из четырех машин инструкции доступны для использования являются следующие:

0 Address 
PUSH 
POP 
ADD 
MUL 
DIV 
SUB 

1 Address 
LOAD 
STORE 
MUL 
DIV 
SUB 

2 Address 
MOVE (X, Y) 

MUL (X, Y) 
DIV (X, Y) 
SUB (X, Y) 


3 Address 


SUB (X, X, Y) 
MUL (X, X, Y) 
DIV (X, X, Y) 

a) Zero-Address ... 


b) One-Address ... 


c) two-Address ... 


d) three--Address ... 

Я получу лучший ответ, как только смогу! Вся помощь приветствуется!

Edit: Я полагаю, что я решил ... Я получил

Push B 
Push C 
Sub 
Push A 
Push D 
MUL 
DIV 
Pop X 

Edit2: Я считаю, что я решил B, а также, если вы видите что-то не так с моими ответами, дайте мне знать, пожалуйста ...

Load A 
MUL D 
Store T 
Load B 
Sub C 
Div T 
Store X 
+0

Какая награда за лучший ответ? –

+0

Не на 100% положительный, но я уверен, что это очки или что-то в этом роде :) Я знаю, что для ответов yahoo это +10. У меня есть учетная запись с более чем 2000 пунктами, но стек намного лучше для моих вопросов в области компьютерных наук. –

ответ

1

1) 0-адрес

кажется, что в зависимости от предполагаемого порядка стека регистров ваш заказ может быть неправильным. После

Push B 
Push C 
Sub 
Push A 
Push D 
MUL 

стек будет содержать

A*D 
B-C 

Что может разделить в обратном порядке.

2) 1-адрес.

Кажется, что это было бы может быть более эффективным, чтобы сделать

Load B 
Sub C 
Div A 
Div D 
Store X 

Предполагая, что ваша латентность памяти плюс умножает латентность выше Division латентности. при условии также, что это разрешено, чтобы преобразовать

х = (B - C)/(А * D) в X = ((B - C)/А)/D

3) 2-адрес

Если мы предположим, что мы можем иметь 2 временные регистры затем:

MOV B T1 
SUB T1 C 
MOV A T2 
MUL D T2 
DIV T1 T2 

Если мы предположим, только один временный регистр, но дают возможность изменять формулу так же, как в 2, то

MOV B T 
SUB T C 
DIV T A 
DIV T D 

Если ни один из тех, которые разрешены, то:

MOV B T 
SUB T C 
MOV C MEM 
MOV A T 
MUL A D 
DIV MEM T 

4) 3-адрес

SUB T1, B, C  # T1 = B - C 
MUL T2, A, D  # T2 = A * D 
DIV T2, T1, T2