Upload
edsonmoretti
View
1.343
Download
1
Embed Size (px)
DESCRIPTION
Seminário apresentado por alunos da Universidade de Pernambuco Caruaru sobre Otimizaçãod e Código Intermediário
Citation preview
CODE OPTIMIZATIONCODE OPTIMIZATION
Presented By:
Amita das
Jayanti bhattacharya
Jaistha Upadhyay
Designer da compilação
Analise Léxica
Analise Sintática
Analise Semântica
Geração do Código
Otimização de Código
Tabela de Símbolos
Exibição deErros
Código fonte
Código Objeto
Geração do Código Intermediário
O que é otimização?O que é otimização?
Em computação, otimização é o processo de modificar Em computação, otimização é o processo de modificar fazer algum aspecto de um sistema para que trabalhe com fazer algum aspecto de um sistema para que trabalhe com mais eficiência ou utilize menos recursos. mais eficiência ou utilize menos recursos.
Por exemplo, um programa de computador pode ser Por exemplo, um programa de computador pode ser otimizada de modo que ele seja executado mais rápido, ou otimizada de modo que ele seja executado mais rápido, ou seja capaz de operar com o menos armazenamento de seja capaz de operar com o menos armazenamento de memória ou outros recursos, ou consomem menos memória ou outros recursos, ou consomem menos energia. O sistema pode ser um programa único de energia. O sistema pode ser um programa único de computador, um conjunto de computadores ou mesmo computador, um conjunto de computadores ou mesmo toda uma rede como a internet.toda uma rede como a internet.
““Níveis” de otimizaçãoNíveis” de otimizaçãoOtimização pode ocorrer em um número de "níveis":Otimização pode ocorrer em um número de "níveis":
Nível de designNível de design
No nível mais alto, o projeto pode ser otimizado para fazer o No nível mais alto, o projeto pode ser otimizado para fazer o melhor uso dos recursos disponíveis. A implementação deste melhor uso dos recursos disponíveis. A implementação deste projeto irá se beneficiar do uso de algoritmos eficientes e projeto irá se beneficiar do uso de algoritmos eficientes e adequados a implementação destes algoritmos irão beneficiar de adequados a implementação destes algoritmos irão beneficiar de escrever código de boa qualidade. O projeto arquitetônico de escrever código de boa qualidade. O projeto arquitetônico de um sistema predominantemente afeta seu desempenho. A um sistema predominantemente afeta seu desempenho. A escolha do algoritmo afeta a eficiência mais do que qualquer escolha do algoritmo afeta a eficiência mais do que qualquer outro item do projeto.outro item do projeto.
Nível de compilaçãoNível de compilação
O uso de um compilador otimizado tende a assegurar que o O uso de um compilador otimizado tende a assegurar que o programa executável é optimizada, pelo menos tanto quanto o programa executável é optimizada, pelo menos tanto quanto o compilador pode prever.compilador pode prever.
Nível AssemblyNível Assembly
No nível mais baixo, escrevendo código usando uma linguagem de No nível mais baixo, escrevendo código usando uma linguagem de montagem projetado para uma plataforma de hardware específico, montagem projetado para uma plataforma de hardware específico, normalmente, produzem o código mais eficiente, pois o programador normalmente, produzem o código mais eficiente, pois o programador pode aproveitar o repertório completo de instruções de máquina. Os pode aproveitar o repertório completo de instruções de máquina. Os sistemas de operação da maior parte das máquinas tem sido sistemas de operação da maior parte das máquinas tem sido tradicionalmente escrito em código Assembler por esta razão.tradicionalmente escrito em código Assembler por esta razão.
Runtime (tempo de execução)Runtime (tempo de execução)Apenas compiladores e programadores Apenas compiladores e programadores assemblerassembler são capazes de são capazes de realizar a otimização de tempo de execução.realizar a otimização de tempo de execução.
Quando a otimizar?Quando a otimizar?
Optimização é muitas vezes realizada no final do estágio de Optimização é muitas vezes realizada no final do estágio de desenvolvimento, uma vez que:desenvolvimento, uma vez que:
• Reduz a legibilidadeReduz a legibilidade• Adiciona código que é utilizado para melhorar o Adiciona código que é utilizado para melhorar o
desempenhodesempenho
Critérios para a otimização
Uma otimização deve preservar o significado de um programa:
- Não pode alterar a saída produzida para qualquer entrada.
- Não pode introduzir um erro
Deve, em média, acelerar os programas
Transformação deve valer a pena o esforço
As melhorias podem ser feitas em várias fases:
Código Fonte:
- Alterações no algoritmo podem produzir melhorias espetaculares- Criação de perfil pode ser útil para chamar a atenção de um programador no código de suma importância.
Código Intermediário:
- Compilador pode melhorar loops, chamadas de procedimento e cálculos de endereço- Normalmente apenas compiladores otimizando incluir esta fase.
Código Alvo:
- Os compiladores podem usar registros com eficiência.- Transformação Peephole pode ser aplicado
Tipos de OtimizaçãoTipos de Otimização
Remoção de sub-expressão comum.Remoção de sub-expressão comum. Otimização de Códigos MortosOtimização de Códigos Mortos Otimização de Loops.Otimização de Loops.
Remoção de sub-expressão comum.Remoção de sub-expressão comum.
Remoção de sub-expressão comum é uma otimização que procura por ocorrências de expressões idênticas (ou seja, todos eles avaliar o mesmo valor), e as análises se vale a penas em substituir por uma única variável mantendo o valor calculado.
a=b * c + g
d=b * c * d
temp=b * c
a=temp + g
d=temp * d
Eliminação de código morto é uma otimização do compilador que remove código que não afeta um programa. Remoção de tal código
tem duas vantagens encolhe o tamanho do programa, uma consideração importante em alguns contextos. Ele permite que o
programa em execução evitar a execução de operações irrelevantes, o que reduz seu tempo de execução.
Eliminação de código morto é de dois tipos:
- Código Inacessível
- Declaração redundante
Otimização de Código Morto
Código Inacessivel
Em Programação de Computadores, código inacessível ou código morto é o código que existe no código fonte de um programa, mas nunca pode ser executado.
Program Code
If (a>b)
m=a
elseif (a<b)
m=b
elseif (a==b)
m=0
else
m=-1
Optimized Code
If (a>b)
m=a
elseif (a<b)
m=b
else
m=0
Código redundante
Código redundante é o código que é executado mas não tem qualquer efeito sobre a saída a partir de um programa
main(){
int a,b,c,r;
a=5;
b=6;
c=a + b;
r=2;
r++;
printf(“%d”,c);
}
Adicionando complexidade de tempo e espaço
Otimização de LoopOtimização de Loop
Otimização de Loop desempenha um papel importante na melhoria do desempenho do código fonte, reduzindo despesas gerais associadas com loops de execução.
Otimização de loop pode ser feito através da remoção:
- Loop invariante
- Variáveis de indução
Loop InvarianteLoop Invariante
i = 1
s= 0
do{
s= s + i
a =5
i = i + 1
{
while (i < =n)
i = 1
s= 0
a =5
do{
s= s + i
i = i + 1
{
while (i < =n)
Trazendo a = 5
fazer fora do loop while, é chamado movimento de código.
Variáveis de InduçãoVariáveis de Indução
i = 1
s= 0
S1=0
S2=0
while (i < =n)
{
s= s + a[ i ]
t1 = i * 4
s= s + b[ t1 ]
t2 = t1 +2
s2= s2 + c[ t2 ]
i = i + 1
}
i = 1
s= 0
S1=0
S2=0
t2=0
while (i < =n)
{
s= s + a[ i ]
t1 = t1+ 4
s= s + b[ t1 ]
s2= s2 + c[t1 +2 ]
i = i + 1
}
t1, t2 são variáveis de indução. i está induzindo t1 e t1 está induzindo t2
“+” replaced “ * ”, t1 was made independent of i
Common Sub-expression RemovalCommon Sub-expression Removal
It is used to remove redundant computations which usually improves It is used to remove redundant computations which usually improves the execution time of a program.the execution time of a program.
Three Address Code of Quick SortThree Address Code of Quick Sorti = m - 1i = m - 1
j = nj = n
tt1 1 =4 * n=4 * n
v = a[tv = a[t11]]
i = i + 1i = i + 1
tt22 = 4 * i = 4 * i
tt33 = a[t = a[t22]]
if tif t33 < v goto (5) < v goto (5)
j = j – 1j = j – 1
tt44 = 4 * j = 4 * j
tt55 = a[t = a[t44]]
if tif t55 > v goto (9) > v goto (9)
if i >= j goto (23)if i >= j goto (23)
tt6 6 = 4 * i = 4 * i
x = a[tx = a[t66]]
11
22
33
44
55
66
77
88
99
1010
1111
1212
1313
1414
1515
tt77 = 4 * I = 4 * I
tt88 = 4 * j = 4 * j
tt99 = a[t = a[t88]]
a[ta[t77] = t] = t99
tt1010 = 4 * j = 4 * j
a[ta[t1010] = x] = x
goto (5)goto (5)
tt1111 = 4 * I = 4 * I
x = a[tx = a[t1111]]
tt1212 = 4 * i = 4 * i
tt1313 = 4 * n = 4 * n
tt1414 = a[t = a[t1313]]
a[ta[t1212] = t] = t1414
tt1515 = 4 * n = 4 * n
a[ta[t1515] = x] = x
1616
1717
1818
1919
2020
2121
2222
2323
2424
2525
2626
2727
2828
2929
3030
Find The Basic BlockFind The Basic Blocki = m - 1i = m - 1
j = nj = n
tt1 1 =4 * n=4 * n
v = a[tv = a[t11]]
i = i + 1i = i + 1
tt22 = 4 * i = 4 * i
tt33 = a[t = a[t22]]
if tif t33 < v goto (5) < v goto (5)
j = j – 1j = j – 1
tt44 = 4 * j = 4 * j
tt55 = a[t = a[t44]]
if tif t55 > v goto (9) > v goto (9)
if i >= j goto (23)if i >= j goto (23)
tt6 6 = 4 * i = 4 * i
x = a[tx = a[t66]]
11
22
33
44
55
66
77
88
99
1010
1111
1212
1313
1414
1515
tt77 = 4 * I = 4 * I
tt88 = 4 * j = 4 * j
tt99 = a[t = a[t88]]
a[ta[t77] = t] = t99
tt1010 = 4 * j = 4 * j
a[ta[t1010] = x] = x
goto (5)goto (5)
tt1111 = 4 * i = 4 * i
x = a[tx = a[t1111]]
tt1212 = 4 * i = 4 * i
tt1313 = 4 * n = 4 * n
tt1414 = a[t = a[t1313]]
a[ta[t1212] = t] = t1414
tt1515 = 4 * n = 4 * n
a[ta[t1515] = x] = x
1616
1717
1818
1919
2020
2121
2222
2323
2424
2525
2626
2727
2828
2929
3030
Flow GraphFlow Graphi = m - 1i = m - 1
j = nj = n
tt1 1 =4 * n=4 * n
v = a[tv = a[t11]]
i = i + 1i = i + 1
tt22 = 4 * i = 4 * i
tt33 = a[t = a[t22]]
if tif t33 < v goto B < v goto B22
j = j – 1j = j – 1
tt44 = 4 * j = 4 * j
tt55 = a[t = a[t44]]
if tif t55 > v goto B > v goto B33
if i >= j goto B6
tt6 6 = 4 * i = 4 * i
x = a[tx = a[t66]]
tt77 = 4 * i = 4 * i
tt88 = 4 * j = 4 * j
tt99 = a[t = a[t88]]
a[ta[t77] = t] = t99
tt1010 = 4 * j = 4 * j
a[ta[t1010] = x] = x
goto Bgoto B22
tt1111 = 4 * i = 4 * i
x = a[tx = a[t1111]]
tt1212 = 4 * i = 4 * i
tt1313 = 4 * n = 4 * n
tt1414 = a[t = a[t1313]]
a[ta[t1212] = t] = t1414
tt1515 = 4 * n = 4 * n
a[ta[t1515] = x] = x
B1
B2
B3
B4
B5 B6
Common Subexpression EliminationCommon Subexpression Eliminationi = m - 1i = m - 1
j = nj = n
tt1 1 =4 * n=4 * n
v = a[tv = a[t11]]
i = i + 1i = i + 1
tt22 = 4 * i = 4 * i
tt33 = a[t = a[t22]]
if tif t33 < v goto B < v goto B22
j = j – 1j = j – 1
tt44 = 4 * j = 4 * j
tt55 = a[t = a[t44]]
if tif t55 > v goto B > v goto B33
if i >= j goto B6
tt6 6 = 4 * i = 4 * i
x = a[tx = a[t66]]
tt77 = 4 * i = 4 * i
tt88 = 4 * j = 4 * j
tt99 = a[t = a[t88]]
a[ta[t77] = t] = t99
tt1010 = 4 * j = 4 * j
a[ta[t1010] = x] = x
goto Bgoto B22
tt1111 = 4 * i = 4 * i
x = a[tx = a[t1111]]
tt1212 = 4 * i = 4 * i
tt1313 = 4 * n = 4 * n
tt1414 = a[t = a[t1313]]
a[ta[t1212] = t] = t1414
tt1515 = 4 * n = 4 * n
a[ta[t1515] = x] = x
B1
B2
B3
B4
B5 B6
Common Subexpression EliminationCommon Subexpression Eliminationi = m - 1i = m - 1
j = nj = n
tt1 1 =4 * n=4 * n
v = a[tv = a[t11]]
i = i + 1i = i + 1
tt22 = 4 * i = 4 * i
tt33 = a[t = a[t22]]
if tif t33 < v goto B < v goto B22
j = j – 1j = j – 1
tt44 = 4 * j = 4 * j
tt55 = a[t = a[t44]]
if tif t55 > v goto B > v goto B33
if i >= j goto B6
tt6 6 = 4 * i = 4 * i
x = a[tx = a[t66]]
tt88 = 4 * j = 4 * j
tt99 = a[t = a[t88]]
a[a[tt66] = t] = t99
tt1010 = 4 * = 4 * jj
a[ta[t1010] = x] = x
goto Bgoto B22
tt1111 = 4 * i = 4 * i
x = a[tx = a[t1111]]
tt1212 = 4 * i = 4 * i
tt1313 = 4 * n = 4 * n
tt1414 = a[t = a[t1313]]
a[ta[t1212] = t] = t1414
tt1515 = 4 * n = 4 * n
a[ta[t1515] = x] = x
B1
B2
B3
B4
B5 B6
Common Subexpression EliminationCommon Subexpression Eliminationi = m - 1i = m - 1
j = nj = n
tt1 1 =4 * n=4 * n
v = a[tv = a[t11]]
i = i + 1i = i + 1
tt22 = 4 * i = 4 * i
tt33 = a[t = a[t22]]
if tif t33 < v goto B < v goto B22
j = j – 1j = j – 1
tt44 = 4 * j = 4 * j
tt55 = a[t = a[t44]]
if tif t55 > v goto B > v goto B33
if i >= j goto B6
tt6 6 = 4 * i = 4 * i
x = a[tx = a[t66]]
tt88 = 4 * j = 4 * j
tt99 = a[t = a[t88]]
a[a[tt66] = t] = t99
a[a[tt88] = x] = x
goto Bgoto B22
tt1111 = 4 *i = 4 *i
x = a[tx = a[t1111]]
tt1212 = 4 * i = 4 * i
tt1313 = 4 * n = 4 * n
tt1414 = a[t = a[t1313]]
a[ta[t1212] = t] = t1414
tt1515 = 4 * n = 4 * n
a[ta[t1515] = x] = x
B1
B2
B3
B4
B5 B6
Common Subexpression EliminationCommon Subexpression Eliminationi = m - 1i = m - 1
j = nj = n
tt1 1 =4 * n=4 * n
v = a[tv = a[t11]]
i = i + 1i = i + 1
tt22 = 4 * i = 4 * i
tt33 = a[t = a[t22]]
if tif t33 < v goto B < v goto B22
j = j – 1j = j – 1
tt44 = 4 * j = 4 * j
tt55 = a[t = a[t44]]
if tif t55 > v goto B > v goto B33
if i >= j goto B6
tt6 6 = 4 * i = 4 * i
x = a[tx = a[t66]]
tt88 = 4 * j = 4 * j
tt99 = a[t = a[t88]]
a[a[tt66] = t] = t99
a[a[tt88] = x] = x
goto Bgoto B22
tt1111 = 4 * i = 4 * i
x = a[tx = a[t1111]]
tt1212 = 4 * i = 4 * i
tt1313 = 4 * n = 4 * n
tt1414 = a[t = a[t1313]]
a[ta[t1212] = t] = t1414
tt1515 = 4 * n = 4 * n
a[ta[t1515] = x] = x
B1
B2
B3
B4
B5 B6
Common Subexpression EliminationCommon Subexpression Eliminationi = m - 1i = m - 1
j = nj = n
tt1 1 =4 * n=4 * n
v = a[tv = a[t11]]
i = i + 1i = i + 1
tt22 = 4 * i = 4 * i
tt33 = a[t = a[t22]]
if tif t33 < v goto B < v goto B22
j = j – 1j = j – 1
tt44 = 4 * j = 4 * j
tt55 = a[t = a[t44]]
if tif t55 > v goto B > v goto B33
if i >= j goto B6
tt6 6 = 4 * i = 4 * i
x = a[tx = a[t66]]
tt88 = 4 * j = 4 * j
tt99 = a[t = a[t88]]
a[a[tt66] = t] = t99
a[a[tt88] = x] = x
goto Bgoto B22
tt1111 = 4 * i = 4 * i
x = a[tx = a[t1111]]
tt1313 = 4 * n = 4 * n
tt1414 = a[t = a[t1313]]
a[a[tt1111] = t] = t1414
tt1515 = 4 * n = 4 * n
a[ta[t1515] = x] = x
B1
B2
B3
B4
B5 B6
Common Subexpression EliminationCommon Subexpression Eliminationi = m - 1i = m - 1
j = nj = n
tt1 1 =4 * n=4 * n
v = a[tv = a[t11]]
i = i + 1i = i + 1
tt22 = 4 * i = 4 * i
tt33 = a[t = a[t22]]
if tif t33 < v goto B < v goto B22
j = j – 1j = j – 1
tt44 = 4 * j = 4 * j
tt55 = a[t = a[t44]]
if tif t55 > v goto B > v goto B33
if i >= j goto B6
tt6 6 = 4 * i = 4 * i
x = a[tx = a[t66]]
tt88 = 4 * j = 4 * j
tt99 = a[t = a[t88]]
a[a[tt66] = t] = t99
a[a[tt88] = x] = x
goto Bgoto B22
tt1111 = 4 * i = 4 * i
x = a[tx = a[t1111]]
tt1313 = 4 * n = 4 * n
tt1414 = a[t = a[t1313]]
a[a[tt1111] = t] = t1414
a[a[tt1313] = x] = x
B1
B2
B3
B4
B5 B6
Common Subexpression EliminationCommon Subexpression Eliminationi = m - 1i = m - 1
j = nj = n
tt1 1 =4 * n=4 * n
v = a[tv = a[t11]]
i = i + 1i = i + 1
tt22 = 4 * i = 4 * i
tt33 = a[t = a[t22]]
if tif t33 < v goto B < v goto B22
j = j – 1j = j – 1
tt44 = 4 * j = 4 * j
tt55 = a[t = a[t44]]
if tif t55 > v goto B > v goto B33
if i >= j goto B6
tt6 6 = 4 * i = 4 * i
x = a[tx = a[t66]]
tt88 = 4 * j = 4 * j
tt99 = a[t = a[t88]]
a[a[tt66] = t] = t99
a[a[tt88] = x] = x
goto Bgoto B22
tt1111 = 4 * i = 4 * i
x = a[tx = a[t1111]]
tt1313 = 4 * n = 4 * n
tt1414 = a[t = a[t1313]]
a[a[tt1111] = t] = t1414
a[a[tt1313] = x] = x
B1
B2
B3
B4
B5 B6
Common Subexpression EliminationCommon Subexpression Eliminationi = m - 1i = m - 1
j = nj = n
tt1 1 =4 * n=4 * n
v = a[tv = a[t11]]
i = i + 1i = i + 1
tt22 = 4 * i = 4 * i
tt33 = a[t = a[t22]]
if tif t33 < v goto B < v goto B22
j = j – 1j = j – 1
tt44 = 4 * j = 4 * j
tt55 = a[t = a[t44]]
if tif t55 > v goto B > v goto B33
if i >= j goto B6
x = a[x = a[tt22]]
tt88 = 4 * j = 4 * j
tt99 = a[t = a[t88]]
a[a[tt22] = t] = t99
a[a[tt88] = x] = x
goto Bgoto B22
tt1111 = 4 * i = 4 * i
x = a[tx = a[t1111]]
tt1313 = 4 * n = 4 * n
tt1414 = a[t = a[t1313]]
a[a[tt1111] = t] = t1414
a[a[tt1313] = x] = x
B1
B2
B3
B4
B5 B6
Common Subexpression EliminationCommon Subexpression Eliminationi = m - 1i = m - 1
j = nj = n
tt1 1 =4 * n=4 * n
v = a[tv = a[t11]]
i = i + 1i = i + 1
tt22 = 4 * i = 4 * i
tt33 = a[t = a[t22]]
if tif t33 < v goto B < v goto B22
j = j – 1j = j – 1
tt44 = 4 * j = 4 * j
tt55 = a[t = a[t44]]
if tif t55 > v goto B > v goto B33
if i >= j goto B6
x = tx = t3 3
tt88 = 4 * j = 4 * j
tt99 = a[t = a[t88]]
a[a[tt22] = t] = t99
a[a[tt88] = x] = x
goto Bgoto B22
tt1111 = 4 * i = 4 * i
x = a[tx = a[t1111]]
tt1313 = 4 * n = 4 * n
tt1414 = a[t = a[t1313]]
a[a[tt1111] = t] = t1414
a[a[tt1313] = x] = x
B1
B2
B3
B4
B5 B6
Common Subexpression EliminationCommon Subexpression Eliminationi = m - 1i = m - 1
j = nj = n
tt1 1 =4 * n=4 * n
v = a[tv = a[t11]]
i = i + 1i = i + 1
tt22 = 4 * i = 4 * i
tt33 = a[t = a[t22]]
if tif t33 < v goto B < v goto B22
j = j – 1j = j – 1
tt44 = 4 * j = 4 * j
tt55 = a[t = a[t44]]
if tif t55 > v goto B > v goto B33
if i >= j goto B6
x = tx = t3 3
a[a[tt22] = t] = t55
a[a[tt44] = x] = x
goto Bgoto B22
tt1111 = 4 * i = 4 * i
x = a[tx = a[t1111]]
tt1313 = 4 * n = 4 * n
tt1414 = a[t = a[t1313]]
a[a[tt1111] = t] = t1414
a[a[tt1313] = x] = x
B1
B2
B3
B4
B5 B6
Common Subexpression EliminationCommon Subexpression Eliminationi = m - 1i = m - 1
j = nj = n
tt1 1 =4 * n=4 * n
v = a[tv = a[t11]]
i = i + 1i = i + 1
tt22 = 4 * i = 4 * i
tt33 = a[t = a[t22]]
if tif t33 < v goto B < v goto B22
j = j – 1j = j – 1
tt44 = 4 * j = 4 * j
tt55 = a[t = a[t44]]
if tif t55 > v goto B > v goto B33
if i >= j goto B6
x = tx = t3 3
a[a[tt22] = t] = t55
a[a[tt44] = x] = x
goto Bgoto B22
x = tx = t33
tt1414 = a[t = a[t11]]
a[a[tt22] = t] = t1414
a[a[tt11] = x] = x
B1
B2
B3
B4
B5 B6
Similarly for B6
Dead Code EliminationDead Code Eliminationi = m - 1i = m - 1
j = nj = n
tt1 1 =4 * n=4 * n
v = a[tv = a[t11]]
i = i + 1i = i + 1
tt22 = 4 * i = 4 * i
tt33 = a[t = a[t22]]
if tif t33 < v goto B < v goto B22
j = j – 1j = j – 1
tt44 = 4 * j = 4 * j
tt55 = a[t = a[t44]]
if tif t55 > v goto B > v goto B33
if i >= j goto B6
x = tx = t3 3
a[a[tt22] = t] = t55
a[a[tt44] = x] = x
goto Bgoto B22
x = tx = t33
tt1414 = a[t = a[t11]]
a[a[tt22] = t] = t1414
a[a[tt11] = x] = x
B1
B2
B3
B4
B5 B6
Dead Code EliminationDead Code Eliminationi = m - 1i = m - 1
j = nj = n
tt1 1 =4 * n=4 * n
v = a[tv = a[t11]]
i = i + 1i = i + 1
tt22 = 4 * i = 4 * i
tt33 = a[t = a[t22]]
if tif t33 < v goto B < v goto B22
j = j – 1j = j – 1
tt44 = 4 * j = 4 * j
tt55 = a[t = a[t44]]
if tif t55 > v goto B > v goto B33
if i >= j goto B6
a[a[tt22] = t] = t55
a[a[tt44] = t] = t33
goto Bgoto B22
tt1414 = a[t = a[t11]]
a[a[tt22] = t] = t1414
a[a[tt11] = t] = t33
B1
B2
B3
B4
B5 B6
Reduction in StrengthReduction in Strengthi = m - 1i = m - 1
j = nj = n
tt1 1 =4 * n=4 * n
v = a[tv = a[t11]]
i = i + 1i = i + 1
tt22 = 4 * i = 4 * i
tt33 = a[t = a[t22]]
if tif t33 < v goto B < v goto B22
j = j – 1j = j – 1
tt44 = 4 * j = 4 * j
tt55 = a[t = a[t44]]
if tif t55 > v goto B > v goto B33
if i >= j goto B6
a[a[tt22] = t] = t55
a[a[tt44] = t] = t33
goto Bgoto B22
tt1414 = a[t = a[t11]]
a[a[tt22] = t] = t1414
a[a[tt11] = t] = t33
B1
B2
B3
B4
B5 B6
Reduction in StrengthReduction in Strengthi = m - 1i = m - 1
j = nj = n
tt1 1 =4 * n=4 * n
v = a[tv = a[t11]]
tt2 2 = 4 * i= 4 * i
tt44 = 4 * j = 4 * j
tt22 = t = t22 + 4 + 4
tt33 = a[t = a[t22]]
if tif t33 < v goto B < v goto B22
tt44 = t = t44 - 4 - 4
tt55 = a[t = a[t44]]
if tif t55 > v goto B > v goto B33
if i >= j goto B6
a[a[tt22] = t] = t55
a[a[tt44] = t] = t33
goto Bgoto B22
tt1414 = a[t = a[t11]]
a[a[tt22] = t] = t1414
a[a[tt11] = t] = t33
B1
B2
B3
B4
B5 B6