Operações sobre Pilha e Pilha de Execução - Arquitetura x86

Поделиться
HTML-код
  • Опубликовано: 14 дек 2024

Комментарии • 14

  • @geovaniferreira9626
    @geovaniferreira9626 3 месяца назад +2

    Vixe Maria...esse assunto foi muito avançado. De volta para o livro aqui. As aulas estão muito bacanas. Obrigado.

    • @botelhocpp
      @botelhocpp  3 месяца назад

      @@geovaniferreira9626 obrigado! Fico feliz que esteja gostando.

  • @edgardmacfadden2372
    @edgardmacfadden2372 5 месяцев назад +1

    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)?

    • @botelhocpp
      @botelhocpp  5 месяцев назад

      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!

  • @dudz6513
    @dudz6513 2 года назад +1

    obrigado, rei

  • @geovaniferreira9626
    @geovaniferreira9626 3 месяца назад +1

    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.

    • @botelhocpp
      @botelhocpp  3 месяца назад

      @@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.

    • @geovaniferreira9626
      @geovaniferreira9626 3 месяца назад +1

      @@botelhocpp Eu fiz isso na aba de Settings. Na aba DEBUG, a opção encontra-se apagada, como se não tivesse acesso.

    • @geovaniferreira9626
      @geovaniferreira9626 3 месяца назад +1

      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?

    • @botelhocpp
      @botelhocpp  3 месяца назад +1

      @@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

    • @geovaniferreira9626
      @geovaniferreira9626 3 месяца назад +1

      @@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.

  • @berl4_
    @berl4_ 10 месяцев назад +1

    Prof, não entendi uma coisa....
    Porque o senhor precisa na hora de fazer a alocação do offset utilizar o registrador edx pra alocar? Sendo que antes o senhor mostrou movimentando com a operação "ADD", ai o que eu não entendi... Isso foi só para mostrar métodos diferentes ou tem algo haver com a memória?

    • @botelhocpp
      @botelhocpp  5 месяцев назад

      Exato, foi so para mostrar que existem meio diferenfes de endereçar a memória. Depois pesquise por "modos de endereçamento do x86". Para resumir: voce pode usar várias combinações de registradores e imediatos para acessar memória usando os colchetes. Alguns exemplos:
      [ESI + 4]
      [ESI + EDX]
      [ESI + 4*EDX + 4]