Cost of dereferencing a variable on the stack, or dereferenced recently?

With a modern compiler, is it as expensive to dereference a pointer a second time, when the data it points to was dereferenced recently?

int * ptr = new int();
... lots of stuff...
*ptr = 1; // may need to load the memory into the cpu
*ptr = 2; // accessed again, can I assume this will usually be loaded and cost nothing extra?

What if the pointer addresses a variable on the stack, can I assume reading/writing through a pointer to a stack variable costs the same as reading/writing directly to the variable?

int var;
int * ptr = &var;

*ptr = 0; // will this cost the same as if I just said var = 0; ?

And finally, does this extend to more complicated things, such as manipulating a base object on the stack through an interface?

Base baseObject;
Derived * derivedObject = &baseObject;
derivedObject->value = 42; // will this have the same cost as if I just--
derivedObject->doSomething() // --manipulated baseObject directly?

Edit: I'm asking this to gain a deeper understanding; this is less a problem to be solved than it is a request for insight. Please don't worry about "premature-optimization" or other practical concerns, just give me all the rope you can :)

we're still seeing some register shenanigans, but it's hardly expensive.

As for your questions about pointers to the stack, a good optimizer will be able to eliminate those, but again you have to consult the assembly generated by your chosen compiler for your particular platform.