I'm sorry if the question is quite naive, but I don't understand if a call stack is a language implementation detail or it depends on OS?
What I'm trying to understand is what decides how to store local variables and parameters of a function - the language's compiler or OS while running the application? Is it possible to write a C compiler, let's say, for Windows so that it won't be stack based? Or the language syntax dictates us that it must be stack-based language?
Sorry if I say something wrong, just trying to get the basic idea how everything works.