- Видео 44
- Просмотров 47 614
Pedro Botelho
Бразилия
Добавлен 4 окт 2014
Apenas um canal para compartilhar conteúdos de Engenharia de Computação e Sistemas Embarcados!
Oi, me chamo Pedro Botelho, sou Desenvolvedor e Mentor Particular, e sou graduando em Engenharia de Computação, na Universidade Federal do Ceará (UFC).
Qualquer coisa me manda mensagem pelo e-mail!
Abraços e bons estudos.
Oi, me chamo Pedro Botelho, sou Desenvolvedor e Mentor Particular, e sou graduando em Engenharia de Computação, na Universidade Federal do Ceará (UFC).
Qualquer coisa me manda mensagem pelo e-mail!
Abraços e bons estudos.
Conversão de Código C para Assembly - Exercícios - Assembly x86
Aula ministrada para a monitoria da disciplina de "Arquitetura e Organização de Computadores I", do 3º semestre do curso de Engenharia de Computação, da Universidade Federal do Ceará, campus de Quixadá, no dia 20 de agosto de 2024, onde foram feitos exercícios sobre procedimentos e moldura de pilha, convertendo códigos em C para Assembly.
Просмотров: 169
Видео
Usando printf/scanf em Assembly - Assembly x86 (Parte 2)
Просмотров 1474 месяца назад
Nessa aula falamos mais sobre o uso da função printf em Assembly x86 de 32-bits e.g. como usar dados de tamanho menor que 4 bytes. Também falamos da função printf e de como chamar o printf/scanf a partir da função _start (ao invés da main). Essa aula foi primariamente gravada para a monitoria de Arquitetura de Computadores, pela Universidade Federal do Ceará (UFC).
Usando printf/scanf em Assembly - Assembly x86 (Parte 1)
Просмотров 3244 месяца назад
Nessa aula falamos sobre o uso da função printf em Assembly x86 de 32-bits, bem como alguns cuidados em relação a pilha que se deve ter ao chamá-la. Essa aula foi primariamente gravada para a monitoria de Arquitetura de Computadores, pela Universidade Federal do Ceará (UFC).
Palestra: Primeiros Passos no Desenvolvimento de Sistemas Embarcados
Просмотров 523Год назад
SOBRE A PALESTRA: Foram apresentadas formas de como os alunos podem começar a desenvolver sistemas embarcados (SE), buscando tirar dúvidas comuns. Essas dúvidas principais foram elencadas nos cinco principais objetivos da palestra: - O que são Sistemas Embarcados? - Quais as principais Ferramentas? - Como começar a Desenvolver? - Quais Projetos podem ser criados? - Como está o Mercado de Trabal...
Distribuições Contínuas de Carga - Introdução ao Eletromagnetismo
Просмотров 100Год назад
Nessa aula são falados das distribuições contínuas de carga: linear, superficial e volumétrica. Foi revisado o conceito de distribuição discreta de carga, agora com um novo nome.
Campos Elétricos - Introdução ao Eletromagnetismo
Просмотров 52Год назад
Nesse vídeo são falados os conceitos introdutórios da teoria dos campso elétricos, como: campo elétrico gerado por uma carga pontual, gerado por várias cargas pontuais, e linhas de campo.
Lei de Coulomb no Espaço - Introdução ao Eletromagnetismo
Просмотров 97Год назад
Nessa aula foi falado sobre como aplicar a Lei de Coulomb, e o Princípio da Superposição, no plano bidimensional e no espaço tridimensional. Alguns dos assuntos chaves são: vetor posição, vetor separação e vetor na direção radial. Errata: O gravador bugou o áudio, e nos primeiros minutos é muito alto e só sai por um dos autofalantes, e no restante é muito baixo.
Teorema das Cascas - Introdução ao Eletromagnetismo
Просмотров 702Год назад
Nessa aula foi discutido os dois teoremas das cascas, sobre a força eletrostática entre uma casca esférica e uma carga puntiforme (ou carga de prova).
Lei de Coulomb - Introdução ao Eletromagnetismo
Просмотров 54Год назад
Nessa aula são discutidos os conceitos da Lei de Coulomb, que permite calcular a força elétrica entre duas partículas carregadas. Também foi apresentado o conceito do Princípio da Superposição.
Cargas Elétricas - Introdução ao Eletromagnetismo
Просмотров 104Год назад
Esse vídeo aborda o conceito introdutório das cargas elétricas, bem como suas interações básicas.
Braço Robótico com Linux Embarcado e Sensor Acelerômetro - Práticas na Beaglebone Black
Просмотров 2972 года назад
Projeto final da disciplina de "Técnicas de Programação de Sistemas Embarcados II", ou TPSE II, ministrada pelo professor Francisco Hélder Cândido (FHC), na Universidade Federal do Ceará (UFC), campus de Quixadá, apresentado no dia 08 de dezembro de 2022. 1) O PROJETO: O projeto teve como proposta desenvolver um braço robótico que pudesse ser controlado por sensores (que poderiam ser acoplados ...
Fundamentos da Arquitetura x86 - Exercícios - Arquitetura x86
Просмотров 1662 года назад
Essa foi uma aula ministrada aos alunos da disciplina de "Arquitetura e Organização de Computadores I", com o intuito de tirar dúvidas sobre as etapas iniciais da programação em Assembly para a arquitetura x86, e resolver exercícios. Na primeira parte da aula é feito um exercício onde devemos percorrer um array de idades, e imprimir o grupo em que aquela idade se encontra. No decorrer dessa pri...
Ambiente de Linux Embarcado com Buildroot - Práticas na Beaglebone Black
Просмотров 4012 года назад
Prática realizada para a disciplina de "Técnicas de Programação de Sistemas Embarcados II", ou TPSE II, ministrada pelo professor Francisco Hélder Cândido (FHC), na Universidade Federal do Ceará (UFC), campus de Quixadá. Tendo em vista que o processo de geração do ambiente do Linux é complicado, tendo muitos componentes, foi criado uma alternativa centralizada à configuração separada de cada co...
Decodificação de Instruções - Arquitetura ARM
Просмотров 1332 года назад
Decodificação de Instruções - Arquitetura ARM
Programação do Arduino Due em C - Microcontrolador SAM3X8E
Просмотров 3042 года назад
Programação do Arduino Due em C - Microcontrolador SAM3X8E
Temporizador DMTIMER - Práticas na BeagleBone Black
Просмотров 1302 года назад
Temporizador DMTIMER - Práticas na BeagleBone Black
Interrupções Externas (IRQ) - Práticas na BeagleBone Black
Просмотров 3032 года назад
Interrupções Externas (IRQ) - Práticas na BeagleBone Black
Interrupções e Entrada e Saída - Revisão Geral de Arquitetura x86
Просмотров 6343 года назад
Interrupções e Entrada e Saída - Revisão Geral de Arquitetura x86
Funções em Assembly - Revisão Geral de Arquitetura x86
Просмотров 4773 года назад
Funções em Assembly - Revisão Geral de Arquitetura x86
Programação Básica em Assembly - Revisão Geral de Arquitetura x86
Просмотров 9993 года назад
Programação Básica em Assembly - Revisão Geral de Arquitetura x86
FPU x87 e MMX - Exercícios - Coprocessamento em Computadores x86
Просмотров 1233 года назад
FPU x87 e MMX - Exercícios - Coprocessamento em Computadores x86
Conjunto de Instruções da FPU - Coprocessamento em Computadores x86
Просмотров 3403 года назад
Conjunto de Instruções da FPU - Coprocessamento em Computadores x86
Organização da FPU x87 - Coprocessamento em Computadores x86
Просмотров 2813 года назад
Organização da FPU x87 - Coprocessamento em Computadores x86
Introdução ao MMX e FPU x87 - Coprocessamento em Computadores x86
Просмотров 4263 года назад
Introdução ao MMX e FPU x87 - Coprocessamento em Computadores x86
Procedimentos, FSM e Syscall - Exercícios - Arquitetura x86
Просмотров 1383 года назад
Procedimentos, FSM e Syscall - Exercícios - Arquitetura x86
Chamadas de Sistema no Linux - Arquitetura x86
Просмотров 5693 года назад
Chamadas de Sistema no Linux - Arquitetura x86
Máquina de Estados Finitos - Arquitetura x86
Просмотров 3253 года назад
Máquina de Estados Finitos - Arquitetura x86
Procedimentos em Assembly - Arquitetura x86
Просмотров 9463 года назад
Procedimentos em Assembly - Arquitetura x86
Pilha e Matrizes - Exercícios - Arquitetura x86
Просмотров 2303 года назад
Pilha e Matrizes - Exercícios - Arquitetura x86
Operações sobre Pilha e Pilha de Execução - Arquitetura x86
Просмотров 1,6 тыс.3 года назад
Operações sobre Pilha e Pilha de Execução - Arquitetura x86
Estou fazendo uma revisão sobre x86 e essa série me ajudou bastante. Muito obrigado, Pedro. Você menciona neste video que falou em aulas anteriores sobre as instruções IN/OUT, mas eu não encontrei... Qual seria o video?
Oi! Muitas aulas foram removidas do RUclips. Talvez tenha sido em uma delas...
Então pelo que entendi os registradores são como pequenas máquinas que manipulam a matéria prima dados que passam por eles. Ao invés de criar uma variável na memória faço uso do que já existe no processador.
@@VAP92 sim. Mas quem manipula os dados é o processador, os registradores apenas mantém os dados para que sejam processados.
Olá prof Pedro, por algum motivo, o meu SASM não aparece a aba de REGISTRADORES. Eu verifiquei a configuração dele. Mas, eu não consegui resolver. Eu tentei no UBUNTU e no Windows.
@@geovaniferreira9626 voce precisa ir na aba "debug" e ativar a visualização de registradores. Mesmo assim as vezes buga e so aparece depois que do primeiro step do debug.
@@botelhocpp Eu fiz isso na aba de Settings. Na aba DEBUG, a opção encontra-se apagada, como se não tivesse acesso.
Além disso. Essa opção que aparece no seu: MEMORY, Variable or Expressions não aparece aqui no meu SASM. Pode ajudar por favor?
@@geovaniferreira9626 você precisa iniciar o debug para que as opções apareçam. Vc inicia o debug (clicando a seta), dps abre a aba e seleciona oq vc quet
@@botelhocpp Agora, eu entendi mestre. Me desculpe...eu sou iniciante nesse fabuloso mundo da programação Assembly. Muito obrigado. Eu sigo acompanhando as suas excelentes explicações.
Vixe Maria...esse assunto foi muito avançado. De volta para o livro aqui. As aulas estão muito bacanas. Obrigado.
@@geovaniferreira9626 obrigado! Fico feliz que esteja gostando.
Bom dia prof Pedro. Existe a possibilidade de converter o .bin (ou .hex) para o .asm?
@@geovaniferreira9626 sim. Pesquise por objdump!
Parabéns...mais uma aula rica em conhecimentos.
Boa tarde. Eu não sei nada de arquitetura de computador e procurando aprender sobre o assunto. Eu me deparei com essa excelente aula. Parabéns. Eu estou seguindo o fluxo das aulas porque eu estou interessado em aprender ASSEMBLY. Mais uma vez, obrigado por compartilhar a informação.
@@geovaniferreira9626 fico feliz que meus videos tenham ajudado! Caso tenha interesse também dou mentorias online. Sucesso.
@@botelhocpp bacana...eu estou interessado em ler o arquivo .hex (.bin) de um micro (ARM Cortex M3) e gravar em outro micro virgem.
vale a pena estudar ?, gosto de estudar programaçao por hobbie e minha dificuldade que vejo é sempre em 2 coisas laços de repetiçao e pensamento abstrato ou abstraçao , porem realmente tenho gosto pela coisa desde pequeno,porem muito ansioso entao quero tudo pra ontem e logo.
@@andremorinigo433 boa noite. No seu caso recomendo começar por linguagens mais simples, como C. Depois você pode ir para o Assembly.
Professor, Os números sempre terão um espaço de 4 bytes?
@@lia-000-t6n não. No x86 tem várias opções de tamanho na memória e nos registradores. Por ex, DWORD na memória são 4 bytes, mas WORD são apenas 2. Ja nos registradores, EAX são 4, e AX são 2. Existem muitas combinações possíveis.
@@botelhocpp entendi, obg :) então, eu poderia usar a diretiva word pra colocar o 30?
@@lia-000-t6n poderia. value DW 30 So tem que se atentar a faixa de valores possível de cada tamanho.
@@botelhocpp entendi, obg pela atenção :)
muito obrigada pelo conteudo professor, quase me emocionei quando entrei no drive e vi que tinha exercicios ksksks
@@lia-000-t6n Por nada. Fico feliz que tenha gostado! 🥰
Olá Pedro, há alguns anos você ministrou essa monitoria online e ensinou sobre assembly, foi um ponto de entrada fundamental pra mim entender a linguagem, não teria conseguido avançar meus estudos se não fosse por você, pude começar a estudar independente sistemas operacionais e arquitetura de computadores e posteriormente me aprofundar na área de segurança de software, sistemas e microarquitetura de processadores tudo porque você fez um excelente trabalho e acabou me ajudando bastantão :) sucesso pra você!
Fico feliz que eu tenha ajudado e participado da sua jornada! Fique de olho aí que coisas novas vão sair. Sucesso pra ti!
Parabéns Pedro, eu o acompanho a algum tempo e me faz ter fé na nova leva de programadores kk. Continue assim jovem.
@@CYTHON_CODE kkk obrigado cara! Fico feliz que gostou
Pô brother..esse teu número um tá todo escangalhado..melhora só um pouquinho aí valeu!!!
Que é isso rapaz kkk nessa epoca eu escrevia com o mouse
@@botelhocpp hahahaha valeu ótima aula|||
Ta sumido em doutor, otima aula como sempre. Pretende lançar um curso de assembly e C misturando os dois?
Muito obrigado! To sumido sim kkkk vai sair sim viu, to preparando um curso de C e outro de Assembly (mas com C no meio), negócio é tempo! Quando sair aviso aqui no canal.
Muito bom
Fico feliz que tenha gostado!
Pq presume-se que o valor de retorno está em EAX? Isso é uma regra? E pq no EAX e não em outro endereço?
@@filiperdrz isso faz parte da convenção de chamada de procedimento. Pesquise por System V ABI. Isso existe para padronizar todas aa chamadas e retornos de funções, de forma a permitir uma melhor comunicação entre diferentes módulos. O retorno em EAX provavelmente foi escolhido por ele ser o "registrador principal". Toda arquitetura faz essa escolha, o ARM usa o r0, o MIPS/RISC-V usa o a0, etc...
legal os vídeos, mas agora vc poderia fazer um curso de como fazer um sistema operacional básico? tipo como dar boot e fazer imagem iso
Pelo o que vi, realmente precisa usar a api do windows com algumas sutilezas de nomenclatura e com kernel32 (que talvez seja o libkernel32.a): _nomedafuncao@numeroDeBytesDaPilha gcc myprogram.o -o myprogram.exe -lkernel32 Claro, isso foi o que funcionou pra mim aqui
44:47 esse scanf foi acidentalmente confundido com printf.
Obrigado por avisar!
Bom, descobri o porquê do Windows não estar linkando o soma.o e o main.o, aparentemente a função soma precisava um _ no começo do nome. SECTION .text GLOBAL _soma _soma: ; Código nasm -f win32 soma.asm gcc -m32 -c main.c -o main.o gcc -m32 main.o soma.o -o app.exe Aparentemente o gcc do Windows identifica as funções por meio de um _ antes do nome da função.
@@edgardmacfadden2372 hmm que esquisito. Não sabia dessa. Mas que bom que lhe serviu. Serve de aprendizado!
Rapaz, eu sou produtor de conteúdo de ensino superior igual a você. Eu vendo seu material gratuito e excelente (muito mais inclusive do que cursos pagos), eu percebo o quanto é necessário ter esse tipo de conteúdo, mesmo que tenham poucas visualizações. Eu também acabei parando de fazer vídeos, mas vendo seu material, eu fico querendo as atualizações dos seus vídeos e sinto hoje o que o pessoal sente quando me pedem para continuar. Não pare nunca meu caro, mesmo que não tenha a visibilidade que nos valeria a pena. Eu retornarei por vossa causa e da vossa inspiração. Espero que retorne também!! Excelente conteúdo!!
Não tô conseguindo linkar os .o do C e do Asm pq não está tendo referência pra função 'soma'
@@edgardmacfadden2372 no .asm voce tem que colocar a função como global e.g. GLOBAL soma e no .c você tem que definir o cabeçalho da função e.g. int soma(int, int);
@@botelhocpp Tá assim os meus dois arquivos, só não consigo linkar com o gcc os object files deles C: #include <stdio.h> int soma(int a, int b); int main(){ int a = 1; int b = 1; printf("SOMA: %d", soma(a, b)); return 0; } ASM: SECTION .text GLOBAL soma soma: PUSH EBP MOV EBP, ESP PUSH EBX MOV EBX, [ESP + 16] MOV EAX, [ESP + 12] ADD EAX, EBX POP EBX MOV ESP, EBP POP EBP RET 8
@edgardmacfadden2372 qual erro ta dando? Compila assim: nasm -f elf32 soma.asm gcc -m32 -c main.c gcc -m32 main.o soma.o -o app Se não der certo tu coloca -no-pie (caso use o .data no assembly).
@@botelhocpp undefined reference to `soma'
@@edgardmacfadden2372 testou os comandos que falei aí? Nao esqueça desse "-c".
Parabéns pele ditádita professor, aulas excelentes!
@@hiagoneco9719 obrigado! Fico feliz que lhe ajudou
Acho que entendi o pq do PUSH EBP e POP EBP, existe algum contexto onde o EBP tá sendo usado como ponteiro base pra outra parte da pilha com outros valores salvos (pelo menos é o que consigo pensar de momento)?
Sim, sim. O EBP é a base da pilha. Quando um procedimento/função é chamado, um espaço na pilha tem que ser alocado pra isso, porém a pilha do procedimento que o chamou também tem que ser salva. Portanto, a grosso modo, o PUSH EBP no inicio serve pra salvar essa pilha, e o POP EBP no final é pra restaurar essa pilha. O EBP, em resumo, é a base da pilha do procedimento corrente. Ao chamar procedimentos novos, tem que manter os antigos. Então uma "pilha de chamada" consiste de várias "molduras de pilhas", uma pra cada função!
Só consegui compilar no windows com: gcc -m32 -nostdlib objfile.o -o exefile.exe Outras versões que testei: gcc -m32 -static -nostdlib objfile.o -o exefile.exe gcc -m32 -static -nostartfiles Não entendi porque o gcc -m32 objfile.o -o exefile.exe não tava gerando o executável, deve ter alguma opção default no gcc do windows, talvez envolvendo o -nostdlib.
@@edgardmacfadden2372 cara o Windows é zuado... mas tenta depois trocar a opcao nostdlib por -no-pie. Em alguns SOs mais novos desabilitando o PIE (position independent executable).
@@botelhocpp -no-pie não funcionou
Eita Pedrão
Onde o sistema octal é usado?
@@edgardmacfadden2372 o padrão de permissões RWX, usado em varios sistemas, usa o sistema octal: 7 (111) refere-se a permissao ler/escrever/executar, 4 a permisão de ler (100, somente o R). Por exemplo, o comando chmod 777 do Linux, informa que todas as permissões são atribuidas. O 777 se refere ao octal 111 111 111, ou seja, todas as permissões de leitura, escrita e execução no sistema.
Ola, estou a ver este vídeo de Portugal, está ajudar mt mas tenho uma dúvida, aqui na minha aula nós não usamos EAX mas sim AX, é igual? Creio que seja o nome dos registradores
Que legal! Veja as aulas mas introdutórias no canal, pode te ajudar. O AX é a versão de 16bits do EAX!
Eu me senti meio na contramão aqui 😅😅 Diferente do padrão (um programador que quer diminuir o nivel de abstração...) eu vim de um estudo de eletrônica e hardware pra ca 😅😅😅 (no meu caso eu to aumentando o nivel de abstração)
Ta no caminho certo! Mas recomendo entender primeiro o basico de arquitetura, entender o processador e o uso das instruções pra depois aprender Assembly. O resto é historia!
Nunca vi uma didática tão boa
Fico feliz que gostou cara! Sucesso 👏
Olá. 👍
8:18
Pedrão, que aula fantástica, eu amo Javascript mas a minha lógica tava um lixo. Decidi começar do início mesmo, ótimo conteúdo!
Obrigado amigo! Que bom que lhe ajudou. Pra melhorar a logica so fazendo exercicios mesmo cara...
10:08
Incrível sua capacidade de ensino, parabéns!!!
Muito obrigado!
Bom dia, gostei muito da suas explicações mas fiquei com algumas duvidas sobres a necessidade dos contadores para a interrupção. Vc teria algum curso ou apostila em alguma plataforma.
Obrigado amigo, fico feliz que tenha lhe ajudado. Ainda não fiz nenhum curso sobre isso, mas você pode me contactar diretamente elo e-mail: pedrobotelho15@alu.ufc.br. Abraços!
Eu não sei se isto foi falado antes (ou depois desta aula), mas o Kernel pode, por exemplo, alterar o conteúdo do registrador EAX e, com isto, inutilizar um código nosso que esteja rodando naquele exato momento e gravando ou lendo o EAX?
@@mautresim se ele alterar o EAX, ele deve o salvar antes.
👋📌Qual seu Whatsapp, para Iniciar Aulas em Assembly?
Você pode me contatar pelo email: pedrobotelho15@alu.ufc.br
Incrivel cara, muito obrigado por disponibilizar esse conteudo atemporal de alta qualidade!
Obrigado amigo! Que bom que lhe serviu.
O windows usa as mesmas syscalls?
Olá! Não, no Windows é um pouquinho mais complicado, já que tem que usar a API do Windows. Caso esteja interessado o livro do Kip Irvine explica isso. Abraços!
show
show
obrigado
melhor aula do youtube de assembly
Obrigado meu amigo!
Serve pra nada essa linguagem.
Você que serve, né? Kkkkkkkk
aulao ! 2024, to aqui eu do futuro... ! comenta aqui, quando vc vê isso no futuro , e me fala como vc esta ! <3
@@BabaYaga.Dev_Hacker muito obrigado! To bem cara kk
Veja 1:12:47.
Olá, estou acompanhando o curso é gostaria de saber se tem material disponível?
Olá, a que material se refere? Os slides?
@@botelhocpp sim e pdf se tiver. A forma de ensinar assembly com C. Gostei muito.
Mds, que playlist maravilhosa
Obrigado! Fico feliz que tenha gostado.
Muito bom cara, valeuu em
2024 Mandando ver nos fundamentos!
Aproveita! Fica de olho no canal que vai sair coisa nova.