When working with special hardware systems, the vendor can provide the specific physical memory location of special registers. In C++ you modify these
registers directly.
------------------
volatile uint32_t* hardware_register = reinterpret_cast
int main() {
uint32_t value = *hardware_register;
std::cout << "Register value: " << value << std::endl;
*hardware_register = 0x12345678;
------------
OpenGL is a free 3D Rendering Pipeline that has been around since the 90s.
You start with a C++ OpenGL project and begin the Pipeline by creating an OpenGL context (Enviroment). Then you link the shader code (i.e. Vertex and Fragment) to the currently active Vertex/Fragment shader locations that your main program will access.
Binary Objs need a specific memory layout in order to be effectively read by the processors.
Windows follows the ELF (Exec and Linking Format) format, and names its
directly runnable binary objects as .exe.
There is a another binary object proprietary to Windows known as .dll that is meant to be loaded in by the .exe during runtime.
Dll's are used to minimize the memory size of a program by only loading in the needed binaries by specific events. Without Dll's we would need to
load in ALL the dependancies of a program on startup, instead of piece by piece as necessary.
The ELF architecture contains several memory-subsections to provide the infrastructure of a binary object (a header, and other subsections used for instructions and indexing).