Dataflow_Galkina_424 (Практикум 2)
Описание файла
Файл "Dataflow_Galkina_424" внутри архива находится в следующих папках: Практикум 2, отчеты. PDF-файл из архива "Практикум 2", который расположен в категории "". Всё это находится в предмете "конструирование компиляторов" из 8 семестр, которые можно найти в файловом архиве МГУ им. Ломоносова. Не смотря на прямую связь этого архива с МГУ им. Ломоносова, его также можно найти и в других разделах. .
Просмотр PDF-файла онлайн
Текст из PDF
Галкина Екатерина, группа 424int foo (char * s, int n) {i ← -1j ← 0k ← 1p ← 1goto L54L55:t58 ← +, i, ky ← s[t58]t61 ← +, j, kx ← s[t61]L52:x ← -, x, yi ← +, i, 1ifTrue x > y goto L52L53:ifFalse x == y goto L68L67:t69 ← +, i, jp ← /, t69, 2goto L70L68:k ← +, k, 1L70:j ← +, j, 1x ← ygoto L54i ← +, i, 1L54:t71 ← +, i, jt72 ← +, t71, kifTrue t72 < n goto L55L56:t76 ← s[j]return t76}Базовые блоки:B1:(1)(2)(3)(4)(5)B6:i ← -1j ← 0k ← 1p ← 1goto L54L67:t69 ← +, i, jp ← /, t69, 2goto L70(17)(18)(19)B2:B7:L54:(6)t71 ← +, i, j(7)t72 ← +, t71, k(8)ifTrue t72 < n goto L55L68:(20) k ←B3:B8:L55:(9)t58(10) y ←(11) t61(12) x ←L70:(21) j ← +, j, 1(22) x ← y(23) goto L54← +, i, ks[t58]← +, j, ks[t61]+, k, 1B4:B9:L52:(13) x ← -, x, y(14) i ← +, i, 1(15) ifTrue x > y goto L52L56:(24) t76 ← s[j](25) return t76B5:B10:(26)L53:ifFalse x == y goto L68(16)i ←+, i, 1ГПУ:Множества gen и kill для каждого блока (бинарный векторсоответствует инструкциям в базовых блоках в порядке номеровблоков):BB1B2B3B4B5B6B7B8B9B10BB1B2B3B4B5B6B7B8B9B10Gen(B)(i, B1) (j, B1) (k, B1)(p, B1)(t71, B2) (t72, B2)(t58, B3) (y, B3) (t61,B3) (x, B3)(x, B4) (i, B4)0(t69, B6) (p, B6)(k, B7)(j, B8) (x, B8)(t76, B9)(i, B10)Kill(B)(i, B4) (p,(j, B8) (i,0(x, B4) (x,(i, B1) (x,(i, B10)0(p, B1)(k, B1)(j, B1) (x,0(i, B1) (i,B6) (k, B7)B10)B8)B3) (x, B8)B3) (x, B4)B4)1111000000000000000000000000000000000000000000000000000000010000 0000 0000 0000 00000110 0000 0000 0000 00000000 1111 0000 0000 00000000 0000 1100 0000 00000000 0000 0000 0000 00000000 0000 0000 1100 00000000 0000 0000 0001 00000000 0000 0000 0000 11000000 0000 0000 0000 00010000 0000 0000 0000 00000000 0000 0000 0100 0101 1000 010000 0000 0000 0000 0000 0000 000000 0000 0000 1000 0000 0100 001000 0000 0001 0000 0000 0100 01000000010010010000001000000000000000000000000000000000000000000100000000000000000000100000000100000000000000000000000000000000000000000000000000000000000000Результат анализа достигающих определений (было проделано 4итерации, In 0 = Out 0 = 0, In 3 = In 4):BB1In RD(B)00000 0000 0000 0000 0000 0000 00B2B3B4B5B6B7B8B9B10(i, B1) (j, B1) (k, B1)(p, B1) (t71, B2)(t72, B2) (t58, B3)(y, B3) (t61, B3) (i, B4)(t69, B6) (p, B6) (k, B7)(j, B8) (x, B8) (i, B10)(i, B1) (j, B1) (k, B1)(p, B1) (t71, B2)(t72, B2) (t58, B3)(y, B3) (t61, B3) (i, B4)(t69, B6) (p, B6) (k, B7)(j, B8) (x, B8) (i, B10)(i, B1) (j, B1) (k, B1)(p, B1) (t71, B2)(t72, B2) (t58, B3)(y, B3) (t61, B3) (x, B3)(x, B4) (i, B4) (t69, B6)(p, B6) (k, B7) (j, B8)(i, B10)(j, B1) (k, B1) (p, B1)(t71, B2) (t72, B2) (t58,B3) (y, B3) (t61, B3)(x, B4) (i, B4) (t69, B6)(p, B6) (k, B7) (j, B8)(j, B1) (k, B1) (p, B1)(t71, B2) (t72, B2)(t58, B3) (y, B3)(t61, B3) (x, B4) (i, B4)(t69, B6) (p, B6) (k, B7)(j, B8)(j, B1) (k, B1) (p, B1)(t71, B2) (t72, B2)(t58, B3) (y, B3)(t61, B3) (x, B4) (i, B4)(t69, B6) (p, B6) (k, B7)(j, B8)(j, B1) (k, B1) (p, B1)(t71, B2) (t72, B2)(t58, B3) (y, B3)(t61, B3) (x, B4) (i, B4)(t69, B6) (p, B6) (k, B7)(j, B8)(i, B1) (j, B1) (k, B1)(p, B1) (t71, B2)(t72, B2) (t58, B3)(y, B3) (t61, B3) (i, B4)(t69, B6) (p, B6) (k, B7)(j, B8) (x, B8) (i, B10)01111 0110 1110 0100 1101 1100 011111 0110 1110 0100 1101 1100 011111 0110 1111 1100 1101 1000 010111 0110 1110 1100 1101 1000 000111 0110 1110 1100 1101 1000 000111 0110 1110 1100 1101 1000 000111 0110 1110 1100 1101 1000 001111 0110 1110 0100 1101 1100 010000 0000 0000 0000 0000 0000 00Множества use и def для каждого блока:BUse(B)Def(B)B1{}{i, j, k, p}B2{i, j, k}{t71, t72}B3{i, j, k}{t58, y, t61, x}B4{x, y, i}{}B5{x, y}{}B6{i, j}{t69, p}B7{k}{}B8{j, y}{x}B9{j}{t67}B10{i}{}Результат анализа живых переменных (потребовалось 3 итерации):BOut LV(B)B1{i, j, k}B2{i, j, k}B3{x, y, i, j, k}B4{x, y, i, j, k}B5{y, i, j, k}B6{y, i, j, k}B7{y, i, j, k}B8{i, j, k}B9{}B10{i, j, k}.