Вы находитесь на странице: 1из 8

DLL (Biblioteca de ligao dinmica)

A DLL uma biblioteca que guarda vrias rotinas que so comumente utilizadas por vrios programas (print! (")# cout ("$$)# por e%emplo) & c'digo em uma DLL geralmente compartil(ado entre todos os processos que a utilizam) isto # ela ocupa um espao *nico na mem'ria !+sica Ao e%ecutar o programa pela primeira vez# uma srie de procedimentos ir carregar a rotina que voc, precisa na mem'ria principal e ir armazenar o endereo da rotina que voc, buscou em um local na mem'ria de dados -asso a -asso. -r/DLL 0/ 1uando o programa se depara com uma rotina no local ele gera um desvio# o desvio ser um 2al 3LA4 (o 2al porque ele deve retornar ao -"$5 ap's e%ecutar a rotina) 6 7 & label LA o local dentro do programa que ir ler a mem'ria onde est guardada o endereo da sua rotina no local# ou se2a# ele ir e%ecutar um l8 9s0# LB# carregando o endereo da rotina no local em um registrador(neste caso 9s0)# e logo ap's ir e%ecutar um 2r 9s0 para desviar para o valor contido no endereo LB "omo a nossa primeira e%ecuo# o valor dentro de LB no a rotina que n's queremos ainda# ao invs disso ele ir ter o endereo do identi!icador da rotina# logo ele ir desviar para o identi!icador : / & c'digo do identi!icador da rotina no local que o programa quer# ser visto em assembl; como um li 9s<# =D (li > load immediate)# logo ap's carregar =D ele ir desviar para o ligador?carregador(L") 5 7 o ligador?carregador ir carregar o c'digo da rotina em mem'ria e ir mapear o endereo do c'digo para o end de mem'ria LB# ap's isso# ele ir desviar para a rotina no local e a rotina ser e%ecutada @ 7 A%ecuta a rotina no local e retorna para o programa -'s/DLL 0 7 gera o desvio 2al 3LA4 6 7 LA o mesmo local do pr/DLL# s' que agora quando ele !or ler LB# o valor dentro de LB ser o da rotina# logo ele ir desviar para a rotina : / A%ecuta a rotina no local e retorna para o programa

LA. <%B L". <%B LB. <%B LD. <%.B Cem3<%0<<< <0<<4. <%B

1- Quando o programa se depara com uma rotina no local ele gera um desvio, o desvio ser um jal [LA] (o jal porque ele deve retornar ao !"# ap$s e%ecutar a rotina&'

( ) * la+el LA o local dentro do programa que ir ler a mem$ria onde est guardada o endere,o da sua rotina no local, ou seja, ele ir e%ecutar um l- .s1, L/, carregando o endere,o da rotina no local em um registrador(neste caso .s1&, e logo ap$s ir e%ecutar um jr .s1 para desviar para o valor contido no endere,o L/' !omo a nossa primeira e%ecu,o, o valor dentro de L/ no a rotina que n$s queremos ainda, ao invs disso ele ir ter o endere,o do identi0icador da rotina, logo ele ir desviar para o identi0icador'

1 - * c$digo do identi0icador da rotina no local que o programa quer, ser visto em assem+l2 como um li .s3, 45 (li 6 load immediate&, logo ap$s carregar 45 ele ir desviar para o ligador7carregador(L!&'

# ) o ligador7carregador ir carregar o c$digo da rotina em mem$ria e ir mapear o endere,o do c$digo para o end de mem$ria L/, ap$s isso, ele ir desviar para a rotina no local e a rotina ser e%ecutada' 5

8 ) 9%ecuta a rotina no local e retorna para o programa 8

6 : @

LA. <%<<5< <0<< L". <%<<5< DD<< LB. <%0<<< <0<< LD. <%.<<50 <<<< Cem3<%0<<< <0<<4. <%<<50 <<<<

Вам также может понравиться