ASSEMBLY – aula 2 Hugo Calazans André Ricardo. Roteiro 1- Intel x AT&T 2- Pilha e command line...
-
Upload
nathalie-broas -
Category
Documents
-
view
213 -
download
0
Transcript of ASSEMBLY – aula 2 Hugo Calazans André Ricardo. Roteiro 1- Intel x AT&T 2- Pilha e command line...
![Page 1: ASSEMBLY – aula 2 Hugo Calazans André Ricardo. Roteiro 1- Intel x AT&T 2- Pilha e command line arguments 3- Procedimentos 4- Simulando alguns comandos.](https://reader036.fdocuments.us/reader036/viewer/2022070507/570638481a28abb8238f440f/html5/thumbnails/1.jpg)
ASSEMBLY – aula 2ASSEMBLY – aula 2Hugo CalazansHugo Calazans
André RicardoAndré Ricardo
![Page 2: ASSEMBLY – aula 2 Hugo Calazans André Ricardo. Roteiro 1- Intel x AT&T 2- Pilha e command line arguments 3- Procedimentos 4- Simulando alguns comandos.](https://reader036.fdocuments.us/reader036/viewer/2022070507/570638481a28abb8238f440f/html5/thumbnails/2.jpg)
RoteiroRoteiro1- Intel x AT&T1- Intel x AT&T2- Pilha e command line arguments2- Pilha e command line arguments3- Procedimentos3- Procedimentos4- Simulando alguns comandos C4- Simulando alguns comandos C5- Assembly inline5- Assembly inline6- Criando um projeto C/C++ no eclipse6- Criando um projeto C/C++ no eclipse7- Exemplos de código c/c++7- Exemplos de código c/c++8- Exemplos de código Assembly inline8- Exemplos de código Assembly inline9- Linux Man Pages9- Linux Man Pages10- Referências10- Referências
![Page 3: ASSEMBLY – aula 2 Hugo Calazans André Ricardo. Roteiro 1- Intel x AT&T 2- Pilha e command line arguments 3- Procedimentos 4- Simulando alguns comandos.](https://reader036.fdocuments.us/reader036/viewer/2022070507/570638481a28abb8238f440f/html5/thumbnails/3.jpg)
Intel x AT&TIntel x AT&T
Diferenças:Diferenças:1- Ordenação entre source e 1- Ordenação entre source e
destinationdestination2- Nome dos registradores2- Nome dos registradores3- Operandos imediatos (immediate)3- Operandos imediatos (immediate)4- Tamanho dos operandos4- Tamanho dos operandos5- Operandos na memória5- Operandos na memória
![Page 4: ASSEMBLY – aula 2 Hugo Calazans André Ricardo. Roteiro 1- Intel x AT&T 2- Pilha e command line arguments 3- Procedimentos 4- Simulando alguns comandos.](https://reader036.fdocuments.us/reader036/viewer/2022070507/570638481a28abb8238f440f/html5/thumbnails/4.jpg)
Intel x AT&TIntel x AT&T
Intel CodeIntel Code AT&T CodeAT&T Codemov eax,1mov eax,1mov ebx,0ffhmov ebx,0ffhint 80hint 80hmov ebx, eaxmov ebx, eaxmov eax,[ecx]mov eax,[ecx]mov eax,[ebx+3]mov eax,[ebx+3]mov eax,[ebx+20h]mov eax,[ebx+20h]add eax,[ebx+ecx*2h]add eax,[ebx+ecx*2h]lea eax,[ebx+ecx]lea eax,[ebx+ecx]sub eax,[ebx+ecx*4h-20h]sub eax,[ebx+ecx*4h-20h]
movl $1,%eaxmovl $1,%eaxmovl $0xff,%ebxmovl $0xff,%ebxint $0x80int $0x80movl %eax, %ebxmovl %eax, %ebxmovl (%ecx),%eaxmovl (%ecx),%eaxmovl 3(%ebx),%eaxmovl 3(%ebx),%eaxmovl 0x20(%ebx),%eaxmovl 0x20(%ebx),%eaxaddl (%ebx,%ecx,0x2),%eaxaddl (%ebx,%ecx,0x2),%eaxleal (%ebx,%ecx),%eaxleal (%ebx,%ecx),%eaxsubl -0x20(%ebx,%ecx,0x4),subl -0x20(%ebx,%ecx,0x4),%eax%eax
![Page 5: ASSEMBLY – aula 2 Hugo Calazans André Ricardo. Roteiro 1- Intel x AT&T 2- Pilha e command line arguments 3- Procedimentos 4- Simulando alguns comandos.](https://reader036.fdocuments.us/reader036/viewer/2022070507/570638481a28abb8238f440f/html5/thumbnails/5.jpg)
Intel x AT&TIntel x AT&T- Exemplo: Fatorial- Exemplo: Fatorial CC
int fatorial (int numero) {int fatorial (int numero) {int y = 1;int y = 1;if (numero <= 1)if (numero <= 1)
return 1;return 1;y = numero * fatorial (numero - 1);y = numero * fatorial (numero - 1);return y;return y;
}}
![Page 6: ASSEMBLY – aula 2 Hugo Calazans André Ricardo. Roteiro 1- Intel x AT&T 2- Pilha e command line arguments 3- Procedimentos 4- Simulando alguns comandos.](https://reader036.fdocuments.us/reader036/viewer/2022070507/570638481a28abb8238f440f/html5/thumbnails/6.jpg)
Intel x AT&TIntel x AT&T- Exemplo: Fatorial- Exemplo: Fatorial IntelIntel.globl main.globl mainmain:main:
mov eax, 5mov eax, 5mov ebx, 1mov ebx, 1
L1: L1: cmp eax, 0cmp eax, 0 //compara 0 com o valor em //compara 0 com o valor em eaxeaxje L2je L2 //pula p/ L2 se 0==eax (je – pula se igual)//pula p/ L2 se 0==eax (je – pula se igual)imul ebx, eaximul ebx, eax // ebx = ebx*eax// ebx = ebx*eaxdec eaxdec eax //decrementa eax//decrementa eaxjmp L1jmp L1 // pulo incondicional para L1// pulo incondicional para L1
L2: ret L2: ret
![Page 7: ASSEMBLY – aula 2 Hugo Calazans André Ricardo. Roteiro 1- Intel x AT&T 2- Pilha e command line arguments 3- Procedimentos 4- Simulando alguns comandos.](https://reader036.fdocuments.us/reader036/viewer/2022070507/570638481a28abb8238f440f/html5/thumbnails/7.jpg)
Intel x AT&TIntel x AT&T- Exemplo: Fatorial- Exemplo: Fatorial AT&TAT&T.globl main.globl mainmain:main:
movl $5, %eaxmovl $5, %eaxmovl $1, %ebxmovl $1, %ebx
L1: L1: cmpl $0, %eaxcmpl $0, %eax //compara 0 com o valor em //compara 0 com o valor em eaxeaxje L2je L2 //pula p/ L2 se 0==eax (je – pula se igual)//pula p/ L2 se 0==eax (je – pula se igual)imull %eax, %ebximull %eax, %ebx // ebx = ebx*eax// ebx = ebx*eaxdecl %eaxdecl %eax //decrementa eax//decrementa eaxjmp L1jmp L1 // pulo incondicional para L1// pulo incondicional para L1
L2: ret L2: ret
![Page 8: ASSEMBLY – aula 2 Hugo Calazans André Ricardo. Roteiro 1- Intel x AT&T 2- Pilha e command line arguments 3- Procedimentos 4- Simulando alguns comandos.](https://reader036.fdocuments.us/reader036/viewer/2022070507/570638481a28abb8238f440f/html5/thumbnails/8.jpg)
Intel x AT&TIntel x AT&T- Exemplo: Ponto de - Exemplo: Ponto de entradaentrada NASMNASM
section .data
section .text global _start
_start: push epbmov ebp,esppush ebxpush esipush edi
; código do seu programa
pop edipop esipop ebxmov esp,ebppop ebp
![Page 9: ASSEMBLY – aula 2 Hugo Calazans André Ricardo. Roteiro 1- Intel x AT&T 2- Pilha e command line arguments 3- Procedimentos 4- Simulando alguns comandos.](https://reader036.fdocuments.us/reader036/viewer/2022070507/570638481a28abb8238f440f/html5/thumbnails/9.jpg)
Intel x AT&TIntel x AT&T- Exemplo: Ponto de - Exemplo: Ponto de entradaentrada AT&T.data
.globl main
main: pushl %epbmovl %ebp,%esppushl %ebxpushl %esipushl %edi
; código do seu programa
popl %edipopl %esipopl %ebxmovl %esp,
%ebppopl %ebp
![Page 10: ASSEMBLY – aula 2 Hugo Calazans André Ricardo. Roteiro 1- Intel x AT&T 2- Pilha e command line arguments 3- Procedimentos 4- Simulando alguns comandos.](https://reader036.fdocuments.us/reader036/viewer/2022070507/570638481a28abb8238f440f/html5/thumbnails/10.jpg)
Pilha e Argumentos de Pilha e Argumentos de linha de comandolinha de comando Exemplo:Exemplo:
– ./programa infra software 677./programa infra software 677
PILHAPILHA44
““programprograma”a”
““infra”infra”““softwaresoftware
””““677”677”
![Page 11: ASSEMBLY – aula 2 Hugo Calazans André Ricardo. Roteiro 1- Intel x AT&T 2- Pilha e command line arguments 3- Procedimentos 4- Simulando alguns comandos.](https://reader036.fdocuments.us/reader036/viewer/2022070507/570638481a28abb8238f440f/html5/thumbnails/11.jpg)
Pilha e Argumentos de Pilha e Argumentos de linha de comandolinha de comando Exemplo:Exemplo:
– ./programa infra software 677./programa infra software 677
INTELINTEL AT&TAT&T O que é?O que é?pop eaxpop eaxpop ebxpop ebxpop ecxpop ecxpop edxpop edxpop eaxpop eax
pop %eaxpop %eaxpop %ebxpop %ebxpop %ecxpop %ecxpop %edxpop %edxpop %eaxpop %eax
# de args# de args““programprograma”a”““infra”infra”““softwaresoftware””““677”677”
![Page 12: ASSEMBLY – aula 2 Hugo Calazans André Ricardo. Roteiro 1- Intel x AT&T 2- Pilha e command line arguments 3- Procedimentos 4- Simulando alguns comandos.](https://reader036.fdocuments.us/reader036/viewer/2022070507/570638481a28abb8238f440f/html5/thumbnails/12.jpg)
Procedimentos?Procedimentos? Diferentemente do TASM, NASM não Diferentemente do TASM, NASM não
possui o conceito de procedimentopossui o conceito de procedimento– Tudo é Label!Tudo é Label!
Nada de keywords "proc" ou "endp"Nada de keywords "proc" ou "endp"– basta colocar uma labelbasta colocar uma label
Boa práticaBoa prática– comentários delimitando o bloco de comentários delimitando o bloco de
códigocódigo
![Page 13: ASSEMBLY – aula 2 Hugo Calazans André Ricardo. Roteiro 1- Intel x AT&T 2- Pilha e command line arguments 3- Procedimentos 4- Simulando alguns comandos.](https://reader036.fdocuments.us/reader036/viewer/2022070507/570638481a28abb8238f440f/html5/thumbnails/13.jpg)
Procedimentos?Procedimentos?No DOS, sim!No DOS, sim!
DOS
proc fileWrite:mov ah, 40hmov bx, [filehandle]mov cl, [stuffLen]mov dx, offset
stuffToWriteint 21hret
endp fileWrite
![Page 14: ASSEMBLY – aula 2 Hugo Calazans André Ricardo. Roteiro 1- Intel x AT&T 2- Pilha e command line arguments 3- Procedimentos 4- Simulando alguns comandos.](https://reader036.fdocuments.us/reader036/viewer/2022070507/570638481a28abb8238f440f/html5/thumbnails/14.jpg)
Procedimentos?Procedimentos?No Linux, não. Labels!No Linux, não. Labels!
INTEL
fileWrite:mov eax,4mov ebx, [filedesc]mov ecx,
stuffToWritemov edx, [stuffLen]int 80hret
; endp fileWrite
AT&T
fileWrite:movl $4, %eaxmovl ($filedesc),
%ebxmovl $stuffToWrite,
%ecxmovl ($stuffLen),
%edxint $0x80ret
; endp fileWrite
![Page 15: ASSEMBLY – aula 2 Hugo Calazans André Ricardo. Roteiro 1- Intel x AT&T 2- Pilha e command line arguments 3- Procedimentos 4- Simulando alguns comandos.](https://reader036.fdocuments.us/reader036/viewer/2022070507/570638481a28abb8238f440f/html5/thumbnails/15.jpg)
Gerando Código Gerando Código AssemblyAssembly Como gerar código assembly de um Como gerar código assembly de um
programa escrito em C?programa escrito em C?– gcc -S nomeDoPrograma.cgcc -S nomeDoPrograma.c
Será gerado um arquivo assembly com Será gerado um arquivo assembly com o nome “nomeDoPrograma.s”o nome “nomeDoPrograma.s”
Estratégia muito boa para se aprender Estratégia muito boa para se aprender assemblyassembly– Construir programas em C e compilar com Construir programas em C e compilar com
o parâmetro “-S” para gerar o código “.s”o parâmetro “-S” para gerar o código “.s”
![Page 16: ASSEMBLY – aula 2 Hugo Calazans André Ricardo. Roteiro 1- Intel x AT&T 2- Pilha e command line arguments 3- Procedimentos 4- Simulando alguns comandos.](https://reader036.fdocuments.us/reader036/viewer/2022070507/570638481a28abb8238f440f/html5/thumbnails/16.jpg)
Simulando comandos CSimulando comandos C- If-then-else- If-then-else
C
if (EAX == 'w') {writeFile();
} else {doSomethingElse();
}
NASMcmp eax, 'w'jne skipWrite ; Se não,
skip
call writeFilejmp outOfThisMess
skipWrite:call doSomethingElse
outOfThisMess:... ; resto do programa
![Page 17: ASSEMBLY – aula 2 Hugo Calazans André Ricardo. Roteiro 1- Intel x AT&T 2- Pilha e command line arguments 3- Procedimentos 4- Simulando alguns comandos.](https://reader036.fdocuments.us/reader036/viewer/2022070507/570638481a28abb8238f440f/html5/thumbnails/17.jpg)
Simulando comandos CSimulando comandos C- If-then-else- If-then-else
C
if (EAX == 'w') {writeFile();
} else {doSomethingElse();
}
AT&Tcmpl 'w‘, %eaxjne skipWrite ; Se não,
skip
call writeFilejmp outOfThisMess
skipWrite:call doSomethingElse
outOfThisMess:... ; resto do programa
![Page 18: ASSEMBLY – aula 2 Hugo Calazans André Ricardo. Roteiro 1- Intel x AT&T 2- Pilha e command line arguments 3- Procedimentos 4- Simulando alguns comandos.](https://reader036.fdocuments.us/reader036/viewer/2022070507/570638481a28abb8238f440f/html5/thumbnails/18.jpg)
Simulando comandos CSimulando comandos C- while- while
C
int i = 0;
while(i< 100){i = i + 1;
}
NASM
mov eax, 0whileLoop: mov ebx, 100
cmp eax, ebxjge WhileTerminadoinc eaxjmp WhileLoop
WhileTerminado:;resto do código
![Page 19: ASSEMBLY – aula 2 Hugo Calazans André Ricardo. Roteiro 1- Intel x AT&T 2- Pilha e command line arguments 3- Procedimentos 4- Simulando alguns comandos.](https://reader036.fdocuments.us/reader036/viewer/2022070507/570638481a28abb8238f440f/html5/thumbnails/19.jpg)
Simulando comandos CSimulando comandos C- while- while
C
int i = 0;
while(i< 100){i = i + 1;
}
AT&T
movl $0, %eaxwhileLoop: movl $100,
%ebxcmpl %ebx, %eaxjge WhileTerminadoincl %eaxjmp WhileLoop
WhileTerminado:;resto do código
![Page 20: ASSEMBLY – aula 2 Hugo Calazans André Ricardo. Roteiro 1- Intel x AT&T 2- Pilha e command line arguments 3- Procedimentos 4- Simulando alguns comandos.](https://reader036.fdocuments.us/reader036/viewer/2022070507/570638481a28abb8238f440f/html5/thumbnails/20.jpg)
Assembly InlineAssembly Inline- funções inline em C- funções inline em C O que é inline function?O que é inline function?
– Uma forma de instruir o compilador Uma forma de instruir o compilador a inserir o código de uma a inserir o código de uma determinada função dentro do determinada função dentro do código de quem a chamacódigo de quem a chama
![Page 21: ASSEMBLY – aula 2 Hugo Calazans André Ricardo. Roteiro 1- Intel x AT&T 2- Pilha e command line arguments 3- Procedimentos 4- Simulando alguns comandos.](https://reader036.fdocuments.us/reader036/viewer/2022070507/570638481a28abb8238f440f/html5/thumbnails/21.jpg)
Assembly InlineAssembly Inline- funções inline em C- funções inline em C BenefíciosBenefícios
– Redução do overhead existente para Redução do overhead existente para a chamada de uma funçãoa chamada de uma função
– Possível simplificações em tempo de Possível simplificações em tempo de compilação, de forma que não compilação, de forma que não necessariamente todo o código da necessariamente todo o código da função inline precise ser incluídofunção inline precise ser incluído
![Page 22: ASSEMBLY – aula 2 Hugo Calazans André Ricardo. Roteiro 1- Intel x AT&T 2- Pilha e command line arguments 3- Procedimentos 4- Simulando alguns comandos.](https://reader036.fdocuments.us/reader036/viewer/2022070507/570638481a28abb8238f440f/html5/thumbnails/22.jpg)
Assembly InlineAssembly Inline- funções inline em C- funções inline em C DesvantagensDesvantagens
– Possível aumento do tamanho do Possível aumento do tamanho do códigocódigo
Como usar?Como usar?– Colocando a palavra chave “inline” Colocando a palavra chave “inline”
na declaração da funçãona declaração da função
![Page 23: ASSEMBLY – aula 2 Hugo Calazans André Ricardo. Roteiro 1- Intel x AT&T 2- Pilha e command line arguments 3- Procedimentos 4- Simulando alguns comandos.](https://reader036.fdocuments.us/reader036/viewer/2022070507/570638481a28abb8238f440f/html5/thumbnails/23.jpg)
Assembly InlineAssembly Inline Rotinas assembly escritas como Rotinas assembly escritas como
funções inlinefunções inline
CaracterísticasCaracterísticas– ConvenientesConvenientes– VelozesVelozes– Amplamente utilizadas na Amplamente utilizadas na
programações de sistemasprogramações de sistemas
![Page 24: ASSEMBLY – aula 2 Hugo Calazans André Ricardo. Roteiro 1- Intel x AT&T 2- Pilha e command line arguments 3- Procedimentos 4- Simulando alguns comandos.](https://reader036.fdocuments.us/reader036/viewer/2022070507/570638481a28abb8238f440f/html5/thumbnails/24.jpg)
Assembly InlineAssembly Inline Como declarar?Como declarar?
– asm("assembly code"); asm("assembly code"); ImportânciaImportância
– Atua como interface entre funções Atua como interface entre funções assembly e os programas C que as assembly e os programas C que as contêmcontêm
– Atuação sobre operandos e produção Atuação sobre operandos e produção de resultados visíveis para variáveis C de resultados visíveis para variáveis C
![Page 25: ASSEMBLY – aula 2 Hugo Calazans André Ricardo. Roteiro 1- Intel x AT&T 2- Pilha e command line arguments 3- Procedimentos 4- Simulando alguns comandos.](https://reader036.fdocuments.us/reader036/viewer/2022070507/570638481a28abb8238f440f/html5/thumbnails/25.jpg)
Assembly InlineAssembly Inline Exemplo 1:Exemplo 1:
– Move o conteúdo de ecx para eax:Move o conteúdo de ecx para eax: __asm__("movl %ecx, %eax"); __asm__("movl %ecx, %eax");
Exemplo 2:Exemplo 2:– Move o conteúdo de ecx para o endereço da memória Move o conteúdo de ecx para o endereço da memória
apontado por eax:apontado por eax:asm("movb %ecx, (%eax)");asm("movb %ecx, (%eax)");
}}
– Observe nos dois exemplos acima a possibilidade de se utilizar Observe nos dois exemplos acima a possibilidade de se utilizar __asm__(“código”) ou asm(“código”)__asm__(“código”) ou asm(“código”)
![Page 26: ASSEMBLY – aula 2 Hugo Calazans André Ricardo. Roteiro 1- Intel x AT&T 2- Pilha e command line arguments 3- Procedimentos 4- Simulando alguns comandos.](https://reader036.fdocuments.us/reader036/viewer/2022070507/570638481a28abb8238f440f/html5/thumbnails/26.jpg)
Assembly InlineAssembly Inline No caso de mais de uma instrução:No caso de mais de uma instrução:
– Escreve-se uma por linhaEscreve-se uma por linha– Entre aspasEntre aspas– Com o sufixo “\n\t” ao final da Com o sufixo “\n\t” ao final da
instruçãoinstrução– Isso se deve ao fato de que GCC Isso se deve ao fato de que GCC
envia cada instrução como uma envia cada instrução como uma String ao GNU AssemblerString ao GNU Assembler
![Page 27: ASSEMBLY – aula 2 Hugo Calazans André Ricardo. Roteiro 1- Intel x AT&T 2- Pilha e command line arguments 3- Procedimentos 4- Simulando alguns comandos.](https://reader036.fdocuments.us/reader036/viewer/2022070507/570638481a28abb8238f440f/html5/thumbnails/27.jpg)
Assembly InlineAssembly Inline Exemplo 3:Exemplo 3:
#include <stdio.h>#include <stdio.h>int main()int main()
{{__asm__ (__asm__ ( "movl %eax, %ebx\n\t“"movl %eax, %ebx\n\t“
"movl $56, %esi\n\t“"movl $56, %esi\n\t“"movl %ecx, $label(%edx,%ebx,"movl %ecx, $label(%edx,%ebx,
$4)\n\t" $4)\n\t" "movb %ah, (%ebx)");"movb %ah, (%ebx)");}}
![Page 28: ASSEMBLY – aula 2 Hugo Calazans André Ricardo. Roteiro 1- Intel x AT&T 2- Pilha e command line arguments 3- Procedimentos 4- Simulando alguns comandos.](https://reader036.fdocuments.us/reader036/viewer/2022070507/570638481a28abb8238f440f/html5/thumbnails/28.jpg)
Assembly InlineAssembly Inline Exemplo 4Exemplo 4::
#include <stdio.h>#include <stdio.h>int main()int main(){{__asm__("__asm__("movlmovl $1,%eax$1,%eax // SYS_exit// SYS_exitxor %ebx,%ebxxor %ebx,%ebxintint $0x80 $0x80");");}}
![Page 29: ASSEMBLY – aula 2 Hugo Calazans André Ricardo. Roteiro 1- Intel x AT&T 2- Pilha e command line arguments 3- Procedimentos 4- Simulando alguns comandos.](https://reader036.fdocuments.us/reader036/viewer/2022070507/570638481a28abb8238f440f/html5/thumbnails/29.jpg)
Criando um projeto Criando um projeto C/C++ no eclipseC/C++ no eclipse
![Page 30: ASSEMBLY – aula 2 Hugo Calazans André Ricardo. Roteiro 1- Intel x AT&T 2- Pilha e command line arguments 3- Procedimentos 4- Simulando alguns comandos.](https://reader036.fdocuments.us/reader036/viewer/2022070507/570638481a28abb8238f440f/html5/thumbnails/30.jpg)
Criando um projeto Criando um projeto C/C++ no eclipseC/C++ no eclipse
![Page 31: ASSEMBLY – aula 2 Hugo Calazans André Ricardo. Roteiro 1- Intel x AT&T 2- Pilha e command line arguments 3- Procedimentos 4- Simulando alguns comandos.](https://reader036.fdocuments.us/reader036/viewer/2022070507/570638481a28abb8238f440f/html5/thumbnails/31.jpg)
Exemplo Código C/C++Exemplo Código C/C++
![Page 32: ASSEMBLY – aula 2 Hugo Calazans André Ricardo. Roteiro 1- Intel x AT&T 2- Pilha e command line arguments 3- Procedimentos 4- Simulando alguns comandos.](https://reader036.fdocuments.us/reader036/viewer/2022070507/570638481a28abb8238f440f/html5/thumbnails/32.jpg)
Exemplo Código C/C++Exemplo Código C/C++
![Page 33: ASSEMBLY – aula 2 Hugo Calazans André Ricardo. Roteiro 1- Intel x AT&T 2- Pilha e command line arguments 3- Procedimentos 4- Simulando alguns comandos.](https://reader036.fdocuments.us/reader036/viewer/2022070507/570638481a28abb8238f440f/html5/thumbnails/33.jpg)
Executando a Executando a aplicaçãoaplicação
![Page 34: ASSEMBLY – aula 2 Hugo Calazans André Ricardo. Roteiro 1- Intel x AT&T 2- Pilha e command line arguments 3- Procedimentos 4- Simulando alguns comandos.](https://reader036.fdocuments.us/reader036/viewer/2022070507/570638481a28abb8238f440f/html5/thumbnails/34.jpg)
Hello World usando Hello World usando InterrupçõesInterrupções
![Page 35: ASSEMBLY – aula 2 Hugo Calazans André Ricardo. Roteiro 1- Intel x AT&T 2- Pilha e command line arguments 3- Procedimentos 4- Simulando alguns comandos.](https://reader036.fdocuments.us/reader036/viewer/2022070507/570638481a28abb8238f440f/html5/thumbnails/35.jpg)
Hello World usando Hello World usando InterrupçõesInterrupções
![Page 36: ASSEMBLY – aula 2 Hugo Calazans André Ricardo. Roteiro 1- Intel x AT&T 2- Pilha e command line arguments 3- Procedimentos 4- Simulando alguns comandos.](https://reader036.fdocuments.us/reader036/viewer/2022070507/570638481a28abb8238f440f/html5/thumbnails/36.jpg)
Chamando funções Chamando funções externasexternas
![Page 37: ASSEMBLY – aula 2 Hugo Calazans André Ricardo. Roteiro 1- Intel x AT&T 2- Pilha e command line arguments 3- Procedimentos 4- Simulando alguns comandos.](https://reader036.fdocuments.us/reader036/viewer/2022070507/570638481a28abb8238f440f/html5/thumbnails/37.jpg)
Chamando funções externas Chamando funções externas (múltiplos parametros)(múltiplos parametros)
![Page 38: ASSEMBLY – aula 2 Hugo Calazans André Ricardo. Roteiro 1- Intel x AT&T 2- Pilha e command line arguments 3- Procedimentos 4- Simulando alguns comandos.](https://reader036.fdocuments.us/reader036/viewer/2022070507/570638481a28abb8238f440f/html5/thumbnails/38.jpg)
Chamando funções externas Chamando funções externas (múltiplos parametros)(múltiplos parametros)
![Page 39: ASSEMBLY – aula 2 Hugo Calazans André Ricardo. Roteiro 1- Intel x AT&T 2- Pilha e command line arguments 3- Procedimentos 4- Simulando alguns comandos.](https://reader036.fdocuments.us/reader036/viewer/2022070507/570638481a28abb8238f440f/html5/thumbnails/39.jpg)
Chamando funções externas Chamando funções externas (múltiplos parametros)(múltiplos parametros)
![Page 40: ASSEMBLY – aula 2 Hugo Calazans André Ricardo. Roteiro 1- Intel x AT&T 2- Pilha e command line arguments 3- Procedimentos 4- Simulando alguns comandos.](https://reader036.fdocuments.us/reader036/viewer/2022070507/570638481a28abb8238f440f/html5/thumbnails/40.jpg)
Obtendo o tempo de Obtendo o tempo de sistemasistema
![Page 41: ASSEMBLY – aula 2 Hugo Calazans André Ricardo. Roteiro 1- Intel x AT&T 2- Pilha e command line arguments 3- Procedimentos 4- Simulando alguns comandos.](https://reader036.fdocuments.us/reader036/viewer/2022070507/570638481a28abb8238f440f/html5/thumbnails/41.jpg)
Criando e Modificando Criando e Modificando ArquivosArquivos
![Page 42: ASSEMBLY – aula 2 Hugo Calazans André Ricardo. Roteiro 1- Intel x AT&T 2- Pilha e command line arguments 3- Procedimentos 4- Simulando alguns comandos.](https://reader036.fdocuments.us/reader036/viewer/2022070507/570638481a28abb8238f440f/html5/thumbnails/42.jpg)
Linux Man PagesLinux Man Pages O que são?O que são?
– documentação extensiva presente na documentação extensiva presente na maior parte dos SOs da família UNIXmaior parte dos SOs da família UNIX
ComandoComando– man <page_name>man <page_name>
Ótima referência para system callsÓtima referência para system calls– Section 2Section 2
Executadas a partir do serviço de interr 80hExecutadas a partir do serviço de interr 80h
![Page 43: ASSEMBLY – aula 2 Hugo Calazans André Ricardo. Roteiro 1- Intel x AT&T 2- Pilha e command line arguments 3- Procedimentos 4- Simulando alguns comandos.](https://reader036.fdocuments.us/reader036/viewer/2022070507/570638481a28abb8238f440f/html5/thumbnails/43.jpg)
Linux Man PagesLinux Man Pages- Organização típica- Organização típica1. General Commands1. General Commands2. System Calls2. System Calls3. Subroutines3. Subroutines4. Special Files4. Special Files5. File Formats5. File Formats6. Games and screensavers6. Games and screensavers7. Macros and Conventions7. Macros and Conventions8. Maintenence Commands8. Maintenence Commands
![Page 44: ASSEMBLY – aula 2 Hugo Calazans André Ricardo. Roteiro 1- Intel x AT&T 2- Pilha e command line arguments 3- Procedimentos 4- Simulando alguns comandos.](https://reader036.fdocuments.us/reader036/viewer/2022070507/570638481a28abb8238f440f/html5/thumbnails/44.jpg)
Linux Man PagesLinux Man Pages A partir do terminal do unix:A partir do terminal do unix:
– Exemplo: digite “man 2 write”Exemplo: digite “man 2 write” Online:Online:
– http://www.linuxmanpages.com/http://www.linuxmanpages.com/– http://man.he.net/http://man.he.net/– http://www.die.net/doc/linux/man/http://www.die.net/doc/linux/man/
![Page 45: ASSEMBLY – aula 2 Hugo Calazans André Ricardo. Roteiro 1- Intel x AT&T 2- Pilha e command line arguments 3- Procedimentos 4- Simulando alguns comandos.](https://reader036.fdocuments.us/reader036/viewer/2022070507/570638481a28abb8238f440f/html5/thumbnails/45.jpg)
Assembly – Assembly – ReferênciasReferências
http://www/~htcrs/if677/assembly/http://www/~htcrs/if677/assembly/referencias.txtreferencias.txt