ihs – aula prática integração c e assembly
DESCRIPTION
IHS – Aula Prática Integração C e Assembly. Integração C e Assembly em ambiente Linux. Makefile : textfile: textfile.o linlib.o - dependência gcc textfile.o linlib.o –o textfile - como obter textfile textfile.o: testfile.asm - dependência - PowerPoint PPT PresentationTRANSCRIPT
IHS – Aula Prática
Integração C e Assembly
Integração C e Assembly em ambiente Linux
– Makefile:
textfile: textfile.o linlib.o - dependência
gcc textfile.o linlib.o –o textfile - como obter textfile
textfile.o: testfile.asm - dependência
nasm –f elf textfile.asm - como obter textfile.o
linlib.o: linlib.asm - dependência
nasm –f elf linlib.asm - como obter linlib.o
Integração C e Assembly em ambiente Linux
• Usando Funções de Tempo do C• Está estabelecido que a “Era” Unix iniciou-
se em 1 de Janeiro de 1970 as 00:00:00 hs• Quando você ler o tempo ou uma data
através de bibliotecas do C, você obtêm o número atual desta associado a uma variável.
• Esta variável é denominada time_t.• Para obter o valor de time_t, chama-se a
função time.
Integração C e Assembly em ambiente Linux
• Usando Funções de Tempo do C• A função time pode retornar valores de duas
maneiras:• em EAX• em um buffer que você tenha definido
• Para ter o tempo armazenado no buffer você tem que passar o ponteiro do endereço inicial do buffer como parâmetro (via pilha).
• Se você não quer armazenar o tempo no buffer, você tem que passar um ponteiro nulo (0) como parâmetro.
Integração C e Assembly em ambiente Linux
• Usando Funções de Tempo do C[SECTION .text]
global mainextern time
main :push epb
mov ebp,esppush ebxpush esipush edi
push dword 0 call time
add esp,4mov [oldtime],eax
pop edi pop esi pop ebx mov esp,ebp
pop ebp ret
[SECTION .data]
…[SECTION .bss]oldtime resb 4
Integração C e Assembly em ambiente Linux
• Usando Funções de Tempo do C• Existe uma função que converte o valor
obtido por time em uma string formatada como o exemplo: Thu Dec 2 13:59:20 1999
• Esta função é ctime.
• Para usa-la você deve passar o endereço da variável que tem a informação do tempo.
• ctime devolve em EAX um ponteiro para string.
Integração C e Assembly em ambiente Linux
• Usando Funções de Tempo do C[SECTION .text]
global mainextern time
extern ctimemain :
push epb mov ebp,esp
push ebxpush esipush edi
push dword 0 call time
add esp,4mov [oldtime],eax
push dword oldtime ;empilha-se o endereço ; de oldtime
call ctime ; retorna um ponteiro ; para a string em EAX
add esp,4 …pop edi pop esipop ebxmov esp,ebp
pop ebpret[SECTION .data]
…[SECTION .bss]oldtime resb 4
EXEMPLOS!!!