|
|
ru.algorithms- RU.ALGORITHMS ---------------------------------------------------------------- From : Alexander Taradov 2:6096/10.26 03 Jun 2003 15:54:28 To : All Subject : Hужны идеи по генерации кода -------------------------------------------------------------------------------- Допустим есть некая машина, которая: имеет 2 регистра R1 и R2, не имеет другой памяти (в том числе и стека), обладает набором инструкций: mov Rx, Num add Rx, [Ry|Num] sub Rx, [Ry|Num] mul Rx, [Ry|Num] div Rx, [Ry|Num] где Rx, Ry - любые регистры, Num - число. Hеобходим алгоритм работы компилятора арифметических выражений (со скобками, операциями +-/*) в код этой машины. С использованием стека задача - тривиальна, а как сделть без стека? (Во время компиляции стек использовать естественно можно) Всегда ли хватит двух регистров? Я контр-примеров придумать не смог. Пример работы: Вх. срока: 1+2*(3*4+5*6) Выход: mov R1, 3 mul R1, 4 mov R2, 5 mul R2, 6 add R1, R2 mul R1, 2 add R1, 1 результат - в R1. Спасибо большое за ответ или ссылку на книгу (по созможности электронную). Alexander --- GoldED+/W32 1.1.4.7 * Origin: МГТУ им. H.Э. Баумана, ИУ4-43 (2:6096/10.26) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.algorithms/33253edc9a8c.html, оценка из 5, голосов 10
|