Hello,
how does exe know the address where i loaded to ?
The EXE base address can be retrieved from either MSVC itself. Through programming, this involves reading a sector or two of the file and obtaining its base address (to load it to) from the PE header structures (This is described in the MSVC chapter.)
DLLs are the same way.
You will need to write your own tool if you decide to create your own library format (that of what you described.) The series uses PE format because it currently only uses the toolchain provided by MSVC. I use the PE format and DLLs in Neptune (my real OS) because I prefer them. You do not need to use any format (or even go with ELF if you prefer), it will just require some changes in your setup.
Even so, I personally would not include any of the projects as DLLs if you want to go microkernel. Rather, it would be better to build a driver interface, load them, and treat them as real drivers rather then kernel DLLs. Kernel DLLs should be reserved for kernel-specific functionality.
---
The series uses C (technically C++ but its features were never used.) as it is basically the standard systems programming language. The series provides chapters describing the setups and basic formats for different compilers (although currently only PE and MSVC are described., GCC with PE and loading with GRUB has also been possible.)
Please note that the use of PE format and how to set up MSVC to use it is explained in the Kernel Setup chapters. As of current, the only one is
Kernel Setup: MSVC which provides the information you need.