SSA для кода стековой машины

Вы можете использовать WHERE для фильтрации только положительных значений:

SELECT MIN(value)
FROM tab
WHERE value > 0
9
задан Cody Brocious 27 February 2009 в 03:03
поделиться

1 ответ

Необходимо посмотреть на несколько набор идентификаторов SSA, сходящихся на узле (базисный блок). Сохраните промежуточную структуру базисного блока, тот способ, которым можно легко использовать (например, запрос) все идентификаторы в блоке.

Я не уверен, что Вы имеете в виду с коллизией, но я предполагаю, что Вы хотите решить что-то как

 if (bExp)                  if (bExp)
   x := 1                    x1 := 1
 else            SSA:       else
   x := 2                    x2 := 2
 y := x;                    y := Phi(x1,x2)

то есть, Вы хотите Phi в этом месте. Поймите, что нет никакого Phi в исполняемом коде! Используя информацию, что y или (зависимый) на x1 или x2, можно переписать это на следующем шаге. Например, в центральном памятью представлении, Phi (x1, x2) говорит Вам, что x1 и x2 должны быть двумя псевдонимами к той же ячейке памяти, а именно, ячейке памяти y. Phi просто связывает информацию.

if (bExp)
  stackframe[y_index] = 1     (y_index being some offset)
else
  stackframe[y_index] = 2
nop

Надежда это помогает немного!

9
ответ дан 4 December 2019 в 21:51
поделиться
Другие вопросы по тегам:

Похожие вопросы: