what decides where stack is located when process starts on 64-bit machine (x86-64)? it starts normally below 0x0000800000000000 can starting address be set to different (smaller) value?