|
|
Am 19.04.2011 18:10, schrieb Darren New:
> On 4/19/2011 0:24, Lars R. wrote:
>> Well, the C language does not specify that pointers to objects ("data
>> pointer", incl. void*) can be converted to function pointers nor vice
>> versa.
>
> As I said a while back, C (and C++) has a harvard architecture.
Not by definition. The machine model of C and C++ just does _not_
require a von-Neumann architecture. :-D
>> http://roker.spamt.net/c++/datatypes_c55x.png
>
> The Xerox 560 (aka Sigma 9, […])
> The Burroughs B series […]
Thanks for the examples of "unusual" architectures! I still need some
exotic or awkward ones for the C++ course I'm lecturing. :-)
> I worked on an HP machine […]
Which one?
> I think the equally flawed abstraction is having the stack and the heap
> in the same address space. That makes it really hard to implement on
> something where accessing those are separate sets of operations.
Well, the "SMALL" memory model in DOS did nearly the same: Different
segments for code, stack and heap. And every current x86 CPU still uses
segmentation for every memory acces in 16- or 32-bit operation modes.
But AFAIK OS/2 2.x was the last OS that used segments explicitly, all
successors implement a "flat memory model", which was IMHO not an
advantage but a retrograde step and a prostration to lazy (or
incompetent?) C programmers. :-/ Hence we had the imprudent invention of
"NX bit" and similar things.
Sad mad world…
Lars R.
Post a reply to this message
|
|