Сообщение Re: промежуточный трёхадресный код от 27.01.2023 8:21
Изменено 27.01.2023 8:22 0x7be
Re: промежуточный трёхадресный код
Здравствуйте, VjcheslavV, Вы писали:
VV>В разных книгах про промежуточный трёхадресный код читал
VV>Не догоняю как на нём написать к примеру
VV>
VV>Заранее спасибо...
Как-то так:
сложение i 2 temp1 // вычисляем индекс массива в правой части
адрес-индекса a temp1 temp2 // берём адрес элемента массива в правой части
сложение i 1 temp3 // вычисляем индекс массива в левой части
адрес-индекса a temp3 temp4 // берём адрес элемента массива в левой части
переместить temp2 temp4 // присвоение.
Всё очень сильно завсит от выбранной архитектуры команд. Например, можно представить команду mov с такими режимами адресации аргументов, что вся задача в одну операцию уложится.
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>Заранее спасибо...
Как-то так:
Всё очень сильно завсит от выбранной архитектуры команд. Например, можно представить команду mov с такими режимами адресации аргументов, что вся задача в одну операцию уложится.
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 с такими режимами адресации аргументов, что вся задача в одну операцию уложится.