IHS – Aula Prática Integração C e Assembly

8
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 Presentation

Transcript of IHS – Aula Prática Integração C e Assembly

Page 1: IHS – Aula Prática Integração C e Assembly

IHS – Aula Prática

Integração C e Assembly

Page 2: 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

Page 3: IHS – Aula Prática Integração C e Assembly

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.

Page 4: IHS – Aula Prática Integração C e Assembly

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.

Page 5: IHS – Aula Prática Integração C e Assembly

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

Page 6: IHS – Aula Prática Integração C e Assembly

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.

Page 7: IHS – Aula Prática Integração C e Assembly

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

Page 8: IHS – Aula Prática Integração C e Assembly

EXEMPLOS!!!