How to Soft Reset

If for some reason you need to start code execution from the very beginning, here is a couple of ways you can do it:

Pure C++. Cast 0x00 memory address into a function and execute it:

static_cast<void(*)(void)>(0)();

C++ & ASM. Use Assembler to jump to the beginning

asm("jmp 0");

The user has to be aware of the limits of that particular type of "reset". For a more complete reset, including most registers etc. you can also use the watchdog timer. See: Arduino Reset via Software including post #2 which refers to a StackExchange contribution by @Juraj

The various types of resets retain different categories of status information. A power fail restart is the most clean.

I’m using it for debugging my set up currently and for convenience, don’t know if you would ever need this as a feature