Sistemas Computacionais - Linguagem C e Linguagem Assembly (ASM)

7.38k views1920 WordsCopy TextShare
UNIVESP
univesp.br Eixo de Computação - COM210 Univesp - Universidade Virtual do Estado de São Paulo Profes...
Video Transcript:
E aí [Música] o Olá pessoal sejam bem vindos a nossa segunda aula da semana 7 da disciplina sistemas computacionais vamos lá é aula de hoje nós vamos falar sobre linguagem C e linguagem assembly nessa aula a gente vai aprender como fazer funções assembly dentro de programa Inter usando aí uma estrutura básica de um especificador que ele é chamado de slime e é usando um recurso do compilador c ou C + + que é o especificador Elaine é possível a gente combinar comandos da linguagem C com comandos da linguagem acende os especificadores inline eles instruem um
compilador aí seria uma cópia do corpo da função em cada lugar em que a função aí vai ser chamada usamos a palavra chave asm ela pode ser rodeada de dois anderlaines ou apenas mesma palavra asm né dependendo do montador aí é tem uma diferenciação E aí você abre um parei e entre os parentes você vai colocar as instruções em assembly a cada instrução assembler ela deve ir entre aspas duplas e cada em cada uma das Linhas então ali eu tô representando duas instruções né hum a minha as "elas são necessárias porque o compilador por exemplo
de esquecer ele vai enviar cada instrução né para o montador como se fosse uma esfinge tá EA quebra de linha em alguns montadores ela pode ser substituída por ponto-e-vírgula ou barra n tá mas aí tudo vai depender do montador e pode ter em compatibilidade de montadores e é outra coisa interessante é que na arquitetura Intel né arquitetura x86 né existem dois tipos de syntaxe a de para para para trabalhar é com essas coisas como o montador gsc comum né O que a gente tem mais usado corriqueiramente ele usa as em táxi daí tinha gente tá
mas existe também montadoras que usam a sentar-se da Intel aí você tem que especificar dizer e o que você tá usando assim tá que você da Intel tá para gente brincar eu vou pedir para vocês que vocês estão ali o visual Studio code tá eu deixei um site para vocês tá é o visual Studio code ele é um editor bastante conhecido né ele dá suporte a ser mais mais né ele dá suporte é muitas outras aí linguagem e ele vai permitir inclusive o desenvolvimento aí de códigos em diferentes plataformas né como indows Linux o próprio
mar aqui tem algumas instruções básicas né Depois de você baixar né é a o editor né instalar é legal que você instale aí uma extenção né então é depois de instalar a extensão Quando você vai abrir um arquivo CPP né do dos e não é um arquivo fonte você terá um Realce aí dá sim táxi então ele fica bem bonitinho né você consegue fazer alto convite né o CC é o você mais mais né é o C plus plus Na verdade ele é uma linguagem compilada né isso diz que o código fonte do programa ele
também tem que ser traduzido antes de ser executado né não vs code e antes de mais nada um editor e conta com ferramentas aí para trabalhar na linha de comando para fazer grande parte do fluxo de trabalho de desenvolvimento né a extensão né do seu você mais mais ela acaba não incluindo um compilador ou depurador de ser mais mais então por isso você precisa estar lá e essas ferramentas dessas extensões ou usar as já instaladas em seu computador se você já tiver né pode haver um compilador e depurador ser mais mais conhecido aí pelo seu
próprio ambiente de desenvolvimento a que você faz os seus códigos né ou em casa ou no seu trabalho tá verifica antes com os seus colegas o dá uma olhada na documentação sobre a instalação do conjunto de ferramentas e descer né você mais mais né que tem que ter o compilador ou depurador o sistema por exemplo de projeto né algumas plataformas como Linux o Mack Oeste ela já possui um compilador ser mais mais instalada né então você não precisa ser preocupar a maioria das distribuições Minas Ela tem o gênio compiler Collection né que é o GC
instaladas e o médico e o pessoal do MEC trabalha aí com as ferramentas do Excel tá Verifique se tem um compilador instalado depois que você instalar o seu vídeo eu é Cold né E aí o Viseu Viseu Studio code né certifique-se de que o executável do compilador esteja aí no caminho no pf né no Windows você vai trabalhar com o pé fino menino aí não na que você tem que olhar se ele tá lá nesse PF para que a execução os códigos né possam encontrar aí esse compilador é você pode também verificar disponibilidade das Ferramentas
abrindo Aí no terminal né no no vs code e tentando executar diretamente A Livinha via linha de comando né E aí para fazer isso você digita na G né do compilador mais mais menos menos bruxo né E aí você consegue verificar se o compilador para você tá instalado na máquina junto com o editor tá ela vai fazer instalações e pessoal então a gente vai começar a brincar com a questão do slime ali naquele slide anterior a gente falou da estrutura básica né que era a palavra reservada a asme e entre parentes os comandos né ele
a sempre e aqui agora a gente vai falar um pouquinho mais de uma estrutura estendida né na montagem lá em e a gente tinha apenas instruções nessa montagem estendida a gente pode especificar os operandos né ela acaba nos permitindo especificar os registradores de entrada e os registradores de saída e uma lista de registradores aí que vão poder ser substituídos alterados né não é obrigatório especificar os registradores a serem usados né a gente pode deixar isso para o próprio compilador e isso provavelmente se encaixa melhor aí quando a gente pensa que eu te mandar são de
compilador né do GT de qualquer forma o formato que a gente pode usar para fazer essa estrutura Ásia em usando especificadores inline é usar o template assembler né que consiste aí nas estações de montagem cada operando é descrito por uma string de restrição de operando aí seguida por uma expressão O que é ser entre parentes: separam template Assembleia do primeiro operando de saída e o outro dois pontos né separa o último operando de saída da primeiro de entrada Tá sim eles tiverem aí né porque eles são opcionais as vírgulas separam os operandos dentro de cada
grupo então em cada linha ali out Cut Cut você pode colocando, e os operandos né é interessante saber que o número total de operando sair do compilador tradicional GC é limitado a 10 né E aí isso é um limitador aí do próprio compilador montador tá se não houver operando de saída mais houver operadores de entrada você deve colocar os dois pontos consecutivos ao redor aí do local onde os operandos de saída eles apareciam mesmo que ele Olá sejam lá tá então aqui o que o que fizemos foi tomar o valor de B eu vejo a
variável b declarada a fora do ar me né É É fora no no programa né lá em cima igual a doar vocês olharem lá a gente vai ter que dentro do asm o bebê né que foi declarado fora do Asus né ele está lá dentro igual ao de ar né usando a instrução de montagem aí dentro do próprio Asus né o b é o operando de saída né e a interessante você vê que ele foi referenciado aí como é porcentagem zero e o ar é o operando de entrada é referenciado como porcentagem 11 R é
uma restrição nos operandos né R vai dizer ao GC para usar qualquer registrador o sinal dos operados a restrição do operando de saída deve ter um modificador de restrição né E aí o igual né E esse modificador diz que é operando de saída e é somente de gravação Existem duas porcentagens né dois símbolos de porcentagem pré fixadas aí no nome do registrador isso ajuda o gcc a separar distinguir entre operandos E registradores então se você olhar ali no Bené quando o bebê e a né equivalem lá a 0 e 1 na você vê um uma
porcentagem né que significa que são valores Inuyasha x você vê duas porcentagens né demarcando O que são registrador então operando tenho um único prefixo de porcentagem e o registrador tem 2 e o registrador e a X após o terceiro: ele diz é o GC que o valor de porcentagem a x deve ser modificado dentro do asm Então hoje é senão usar a esse registro para armazenar qualquer outro valor né quando a execução do programa Sempre foi concluir concluída de vai ter o valor atualizado Pois é especificado como um operando de entrada em outras palavras a
alteração feita em B dentro do asm deve ser refletido aí no programa fora do asm e aqui a gente fez um código em duas tarde para demonstrar que se em nosso código alteramos o conteúdo de alguns registradores e retomamos do conjunto sem corrigir essas alterações algo ruim pode estar acontecendo né porque o gcc não tem ideia sobre as mudanças no conteúdo do registrador né nós fizemos isso no Asus né via linguagem aí de baixo nível e isso vai nos levar problema Especialmente quando o compilador faz algumas aí tentativas de utilizações o que a gente pode
fazer quando a gente faz é funções as minhas né é usar instruções aí tem efeitos colaterais né que não modificam em os registradores ou consertar quando você sair né Então para usa para utilizar e depois volto GC vai encontrar o ambiente aí as aves como estavam antes tá só para lembrar as vamos usar nesse programa os dois registradores não é a TIM que é o acumulador para operando e para dados resultados e o b o b o ebx que é um ponteiro para dados tá esses dois tipos de registradores esse programa ele usa o especificador
em Laine para fazer uma operação de adição é usando as variáveis declaradas lá no programa cena a primeira linha nessa figura R é o altitude com com o resultado né Ele é o nosso porcentagem zero aí e x e y são os implantes e são recebidos respectivamente aí pela pelas letras né A e B e também são respectivamente aí o porcentagem unha porcentagem dois é são os valores 12 x e y recebe os valores e registradores e o resultado aí acaba recebendo a soma né E é isso que esse pequeno programa faz a diferença desse
é que você muda os valores dos registradores né e o resultado vai estar nesse caso agora em result to né resultado dois né então era isso que eu queria mostrar para vocês que a gente consegue incluir programas e trabalhar com assembly dentro do dos programas em C né era mais para trazer uma curiosidade dá bastante trabalho algumas coisas modificam né Mas é para vocês entenderem quando vocês encontrarem aí o pessoal que tá trabalhando com os comandos online né e a função asm dentro dos códigos isso é bom pessoal com isso aí Cerro essa aula 2
da semana 7 nos vemos na próxima aula um abraço e até mais é E aí [Música] E aí [Música]
Copyright © 2025. Made with ♥ in London by YTScribe.com