bmk2 (Практикум 2)
Описание файла
Файл "bmk2" внутри архива находится в следующих папках: Практикум 2, отчеты. PDF-файл из архива "Практикум 2", который расположен в категории "". Всё это находится в предмете "конструирование компиляторов" из 8 семестр, которые можно найти в файловом архиве МГУ им. Ломоносова. Не смотря на прямую связь этого архива с МГУ им. Ломоносова, его также можно найти и в других разделах. .
Просмотр PDF-файла онлайн
Текст из PDF
Зыков Ю.Г. 4271.p←22.i ← -13.a←04.a1 ← 65. L6: ifFalse i < n goto L16.i ← +, i, 17.goto L28. L3: a ← -, a, i9. L2: t1 ← *, n, 410.t2 ← a1[t1]11.ifTrue a > t2 goto L312.ifFalse a == i goto L413.k←114.i←315.goto L516. L4: k ← %, a, 417.j←k18. L5: i ← *, a, a19.goto L620.k←121.p←422. L1: print p23.return iНББНББНББНББНББНББНББНББНББНББ ; можно заметить, что этот блок недостижимНББГраф потока управленияВсе входящие стрелки входят в начало блока, исходящие – выходят из конца.Далее инструкции индексируются номерами их строк в исходном внутреннем представлении (таким же образом эти инструкции помечены вГПУ).Множества Gen и Kill для всех базовых блоковNB1B2B3B4B5B6B7B8B9B10B11GEN{1,2,3,4}=111100000000000{}=000000000000000{6}=000010000000000{8}=000001000000000{9,10}=000000110000000{}=000000000000000{13,14}=000000001100000{16,17}=000000000011000{18}=000000000000100{20,21}=000000000000011{}=000000000000000KILL{6,8,14,18,21}=000011000100101{}=000000000000000{2,14,18}=010000000100100{3}=001000000000000{}=000000000000000{}=000000000000000{2,6,16,18,20}=010010000010110{13,20}=000000001000010{2,6,14}=010010000100000{1,13,16}=100000001010000{}=000000000000000Анализ достигающих определенийBB1B2B3B4B5B6B7B8B9B10B11(Out[B])0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000(In[B])1000000000000000111100000000000111100000000000000000000000000101111000000000101111110000000101111110000000101111110000000101111111111000000000000000000111100000000011(Out[B])11111000000000001111000000000001011100000000000000010000000001011111100000001011111100000001011011111000001011111100110001011011110111000000000000000111111000000000113 итерации, последняя финальная, т.к.
совпадает со второй.(In[B])2000000000000000111101111011100111101111011100101111110000000101111111011000101111111011000101111111011000101111111011000101111111111000000000000000000111101111011100(Out[B])2111100000000000111101111011100101111111011000100111110000000101111111011000101111111011000101101111101000101111110011000101101111011100000000000000011111101111011100(In[B])3000000000000000111101111011100111101111011100101111110000000101111111011000101111111011000101111111011000101111111011000101111111111000000000000000000111101111011100(Out[B])3111100000000000111101111011100101111111011000100111110000000101111111011000101111111011000101101111101000101111110011000101101111011100000000000000011111101111011100В результате имеем:BB1B2B3B4B5B6B7B8B9B10B11INrd{}{1-4,8-10,13,16-18}{1-4,8-10,13,16-18}{1,3,4,6,8-10}{1,3,4,6,8-10,13,16,17}{1,3,4,6,8-10,13,16,17}{1,3,4,6,8-10,13,16,17}{1,3,4,6,8-10,13,16,17}{1,3,4,6,8-10,13,14,16,17}{}{1-4,8-10,13,16-18}Множества Use и Def для всех базовых блоковNB1B2B3B4B5B6B7B8B9B10B11DEF{1,2,3,4}=111100000000000{}=000000000000000{6}=000010000000000{8}=000001000000000{9,10}=000000110000000{}=000000000000000{13,14}=000000001100000{16,17}=000000000011000{18}=000000000000100{20,21}=000000000000011{}=000000000000000USE{}=000000000000000{2,18}=010000000000100{2,18}=010000000000100{3,6}=001010000000000{3,4,8,9}=001101100000000{3,6,8}=001011000000000{}=000000000000000{3,8,13,16}=001001001010000{3,8}=001001000000000{}=000000000000000{1,2,18}=110000000000100Анализ живых переменныхBB11B10B9B8B7B6B5B4B3B2B1(In[B])0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000(Out[B])10000000000000001100000000001000000000000000000010010000000000010010000000000010010010100000010110010100000011111010100000011111010100001111011010101001111011010101003 итерации.
В результате имеем:BB11B10B9B8B7B6B5B4B3B2B1OUTlv{}{1,2,18}{1-4,8,9,13,16,18}{1-4,8,9,13,16}{1-4,8,9,13,16}{1-4,8,9,13,16}{1-4,6,8,9,13,16}{1-4,6,8,9,13,16}{1-4,6,8,9,13,16}{1-4,8,9,13,16,18}{1-4,8,9,13,16,18}(In[B])1110000000000100110000000000100001001000000000001001001010000001001000000000001011001010000001111101010000001110101010000011101101010000111101101010100000001101010100(Out[B])2000000000000000110000000000100111101101010100111101101010000111101101010000111101101010000111111101010000111111101010000111111101010000111101101010100111101101010100(In[B])2110000000000100110000000000100111101101010000111101101000000111101100010000111111101010000111111101010000111110101010000111101101010100111101101010100000001101010100(Out[B])3000000000000000110000000000100111101101010100111101101010000111101101010000111101101010000111111101010000111111101010000111111101010000111101101010100111101101010100(In[B])3110000000000100110000000000100111101101010000111101101000000111101100010000111111101010000111111101010000111110101010000111101101010100111101101010100000001101010100.