I just read an article about an implementation of a virtual machine on a uC.
I was wondering if, implementing such a virtual machine, capable of running programs of arbitrary size from an external location, and of addressing memory on external chips, it would be possible to run programs of any given complexity.
I'm not concerned about speed, I'm just thinking about size and complexity of programs.
I just read an article about an implementation of a virtual machine on a uC.
What do you mean by uC? The Arduino is essentially a microcontroller, it is not a microcomputer. When power is applied it runs a program that has previously been loaded in it's non-volatile memory. Running programs of any size from an external location is not what it normally does although such an implementation may be possible. They certainly couldn't be very large due to the memory constraints of the Arduino.
I was wondering if, implementing such a virtual machine, capable of running programs of arbitrary size from an external location, and of addressing memory on external chips, it would be possible to run programs of any given complexity.
Sure. But those "external chips" very quickly exceed the cost of the Arduino core, and it becomes unclear what the point is. Here are a couple of examples:
That's actually what I meant. In terms of costs, most probably it is pointless.
In terms of a good exercise, I think it is pretty interesting.
I like the idea behind, even though I can't see any documentation about it, it's more about this guy who tells what he's done, without going into details. Too bad.
I was actually thinking in terms of touring machines and concept of simulation, in the sense that it is always possible to find a machine that simulates another one.
I can't see any documentation about it, it's more about this guy who tells what he's done, without going into details.
Ugh. His site navigation is a bit weird; there are no "next page" links after page 2, but there is a frame on the right with an additional two pages that include (eventually) a link to downloadable source: