I was studying computer architectures and got to the Call Stack

I'm not following a programming course
My uni is more EE with lots of mathematics and a couple of CS courses

Think about the implementation here. How many pointers would you need to keep track of a queue? With a stack, it is just one. This is used so frequently, it's kept in a register, can you spare more registers to support a queue structure? Why wouldn't that be a good idea?

Because you would have to waste cycles loading the register with the additional pointer?
Thanks for the help

still, if you understand how local declarment manages the memory, then you should automicatically understand why it is the way it is

More than that, it just doesn't make sense a to use a queue for function calls. Why would you want to remove the oldest part of the stack? You'd have nowhere to return to. I guess it could work if you used jumps everywhere instead of calls, but that would be pretty retarded, like only using goto's in C.

Well the fact that you have to waste a register is bad enough. The queue would give you no advantages at all, and many disadvantages. A key thing to remember is that just because things are thrown onto the stack in FIFO order, doesn't mean they cannot be accessed arbitrarily. There are memory fetch instructions built into the assembly language to fetch a location with offset.

Thanks, really, it makes a lot more sense now

Err, scratch that part out.

You're welcome.

Assemblers do sometimes have pseudoinstructions that translate into 2 or more actual instructions, easy examples to point out would be how various fixed width ISAs like MIPS deal with having registers larger than their encoding allows (32bit MIPSIV with 64bit registers). I mean its one way to add a couple "missing" instructions, or you can staple shit into a heavily microcoded trashheap every few months instead...

Human pride