REKLAMA

Co dzieje się pod maską? Zaglądamy do disassembly programów w C++

Wiele współczesnych języków programowania to języki bardzo wysokopoziomowe. Operujemy w nich na takich pojęciach, jak klasa, dziedziczenie, metody wirtualne czy LINQ. Tymczasem procesor komputera nie ma pojęcia o żadnej z tych konstrukcji, będąc na dobrą sprawę takim bardziej zaawansowanym kalkulatorem. Czy zastanawialiście się kiedyś, w jaki sposób taki wysokopoziomowy kod jest wykonywany później przez procesor?

Zagadnienia poruszane w tym artykule:

  • Podstawy assemblera;
  • Rejestry;
  • Flagi;
  • Stos;
  • Instrukcje;
  • MOV;
  • XCHG;
  • NOP;
  • ADD;
  • MUL;
  • CMP;
  • JMP;
  • Narzędzia;
  • Najprostszy program;
  • Wartość zwracana z procesu;
  • Buffer overflow attack;
  • Optymalizacja;
  • Debugger;
  • Przekazywanie parametrów – konwencje wywołania;
  • cdecl;
  • pascal;
  • stdcall;
  • Microsoft fastcall;
  • Wymuszenie konkretnej konwencji;
  • Biblioteki;
  • Zmienne;
  • Rozmiar stosu;
  • Struktury;
  • Klasy – widoczność składowych;
  • Metody;
  • A jak jest w C#?
  • Tablice;
  • Optymalizacja;
  • Co robi optymalizator?

Artykuł pochodzi z magazynu "Programista" nr 6/2018 (73). Jest to wydanie z przełomu lipca i sierpnia 2018. Szczegółowy spis treści: https://programistamag.pl/programista-6-2018-73/

Autorem artykułu jest Wojciech Sura. Programuje od przeszło dziesięciu lat w Delphi, C++ i C#, prowadząc również prywatne projekty. Obecnie pracuje w polskiej firmie PGS Software S.A., zajmującej się tworzeniem oprogramowania i aplikacji mobilnych dla klientów z całego świata.

>>FRAGMENT ARTYKUŁU DO POBRANIA<<