[AO VIVO] Fundamentos de assembly x86-64 - Aula 10: A pilha e seu conteúdo inicial

preview_player
Показать описание
• Repositório do curso:

• Resumo do uso do GDB:

• Playlist do curso:

Todo o nosso trabalho só é possível com o apoio de vocês!

- Meus livros na UICLAP:

- Camisetas:

Muito obrigado!

A comunidade debxp apoia os valores e ideais do Software Livre!
Рекомендации по теме
Комментарии
Автор

Ver os endereços de memória permitem realmente entender que os conceitos de estrutura de dados realmente ocorrem de verdade no hardware, não fica só na abstração. De pilha até recursividade. Tudo está conectado.

hiroshinakamura
Автор

Olá... vi que no código final asssemblado, ao analisar-lo via gdb a instrução(print_argc) mov rax, [r8] foi substituída por mov rax, QWORD PTR [r8]. Isso foi a gosto do compilador ou mov rax, r[8] é apenas uma "abreviatura" do comando original e durante o processo de montagem precisam ser substituído? Ou a forma colocada pelo montador é mais eficiente. Obs.. eu entendi claramente nas duas formas o que o comando está fazendo.

HCAPereira
Автор

Debugando o código também não entendi o comportamento da seguinte instrução contida em print_argc (div RBX). Entendi que essa instrução pega o valor de RAX divide por RBX e o quociente é colocado em RAX e o resto em RDX. No momento da execução o valor de RAX é 0x1 o valor de RBX é 0xA. Ao executar a instrução o valor de RAX vai a zero e o valor de RDX passa para 1. Entendo que o quociente dessa divisão deveria ser 0.1 e o resto 0. Ou seja, tanto RDX como RAX ficaria com 0 partindo do pressuposto que estariam armazenando apenas a parte inteira.

HCAPereira