I'm reading the yellow paper, but there are several aspects of how the EVM execution model is initialized for each message call transaction that aren't really clear. Where does the message call data go? Does it become the initial stack contents or memory contents? Whichever it becomes, is the other just initialized to zero?
Also, does the program counter always initialize to zero? I don't see anywhere in the transaction structure that allows you to initialize it to something else. I guess this would mean that one contract is like one function in a "traditional" procedural programming sense, but with a wei balance and dedicated storage attached.