Информация об изменениях

Сообщение Re: промежуточный трёхадресный код от 27.01.2023 8:21

Изменено 27.01.2023 8:22 0x7be

Re: промежуточный трёхадресный код
Здравствуйте, VjcheslavV, Вы писали:

VV>В разных книгах про промежуточный трёхадресный код читал

VV>Не догоняю как на нём написать к примеру
VV>
VV>a[i+1]=&a[i+2];
VV>

VV>Заранее спасибо...

Как-то так:

сложение i 2 temp1 // вычисляем индекс массива в правой части
адрес-индекса a temp1 temp2 // берём адрес элемента массива в правой части
сложение i 1 temp3 // вычисляем индекс массива в левой части
адрес-индекса a temp3 temp4 // берём адрес элемента массива в левой части
переместить temp2 temp4 // присвоение.

Всё очень сильно завсит от выбранной архитектуры команд. Например, можно представить команду mov с такими режимами адресации аргументов, что вся задача в одну операцию уложится.
Re: промежуточный трёхадресный код
Здравствуйте, VjcheslavV, Вы писали:

VV>В разных книгах про промежуточный трёхадресный код читал

VV>Не догоняю как на нём написать к примеру
VV>
VV>a[i+1]=&a[i+2];
VV>

VV>Заранее спасибо...

Как-то так:

Операция      Arg1  Arg2  Arg3
-------------------------------
сложение      i     2     temp1 // вычисляем индекс массива в правой части
адрес-индекса a     temp1 temp2 // берём адрес элемента массива в правой части
сложение      i     1     temp3 // вычисляем индекс массива в левой части
адрес-индекса a     temp3 temp4 // берём адрес элемента массива в левой части
переместить   temp2 temp4       // присвоение.

Всё очень сильно завсит от выбранной архитектуры команд. Например, можно представить команду mov с такими режимами адресации аргументов, что вся задача в одну операцию уложится.