Julien Oster is writing up an interesting series about the evolution of Assembly Language in Intel processors. The first piece is about memory access, and how it’s handled in early CPUs, including the 4004, 8008 and 8085. He writes:
While it has become far less relevant for non-system developers to write assembly than it was a few decades ago, by now CPUs have nevertheless made it much more comfortable to do so. Today we are used to a lot of things: fancy indirect addressing modes with scale, a galore of general purpose registers instead of an accumulator and maybe one or two crippled index registers, condition codes for nearly every instruction (on ARM)…
But also the basics themselves have evolved. Let’s take a look at what past programmers had to put up with in entirely simple, everyday things. We’ll start with the most trivial: writing to memory.
We’ll work backwards, from the present to the past, to explore the wonders of direct addressing in Intel CPUs. (One precautionary warning though: I only really tested the 4004 code in an emulator, and my habits are highly tainted by current Intel CPUs. So if I made some mistake somewhere, kindly point it out and I’ll fix it!)
Stop breadboarding and soldering – start making immediately! Adafruit’s Circuit Playground is jam-packed with LEDs, sensors, buttons, alligator clip pads and more. Build projects with Circuit Playground in a few minutes with the drag-and-drop MakeCode programming site, learn computer science using the CS Discoveries class on code.org, jump into CircuitPython to learn Python and hardware together, or even use Arduino IDE. Circuit Playground Express is the newest and best Circuit Playground board, with support for MakeCode, CircuitPython, and Arduino. It has a powerful processor, 10 NeoPixels, mini speaker, InfraRed receive and transmit, two buttons, a switch, 14 alligator clip pads, and lots of sensors: capacitive touch, IR proximity, temperature, light, motion and sound. A whole wide world of electronics and coding is waiting for you, and it fits in the palm of your hand.
Python for Microcontrollers — Python on hardware, a portal to a world of fun! #Python #Adafruit #CircuitPython @circuitpython @micropython @ThePSF @Adafruit
Get the only spam-free daily newsletter about wearables, running a "maker business", electronic tips and more! Subscribe at AdafruitDaily.com !
Ah the 8085… that was the cpu in the first computer I bought for myself, the venerable Tandy 102 laptop. I had a lot of fun playing around with that machine.
The base x86 architecture support works across almost any platform you can throw at it (even your latest Intel desktop). Standardized base BIOS architecture ensures this. But the x86 architecture is sorely outdated, compare what it takes to do something compared with an ARM core (with MMU). Night and day. Newer architectures are much more efficient in terms of clock cycles. Steve Gibson compared these differences in one of his netcasts.
But the problem with the likes of boards running the likes of an ARM architecture (IP), is that there is no "legacy" base that has been around for decades. So for every non x86 board, you typically need a Board Support Package (BSP, or similar) to deal with anything relatively close to the hardware.
For quasi-embedded, what this means is that for every non x86 compatible processor you need a different tool-chain and libraries etc, (e.g., the Chumby board, hacked routers, Raspberry Pi, on-and-on). Plus if you’re running one of the Unices, forget the depth of compatible software that you get with an x86 compatible platform.
Unfortunately, low-cost embedded x86 compatible boards are becoming scarce. The Atom boards are too big and power hungry. But there is still the venerable AMD Geode line. Alix is one source (not affiliated). Soekris used to be a contender, but prices are now through the roof IMO.
I guess. On the other hand, there are all those lovely CISC CPUs of yesteryear (say, PDP11 and PDP10, for example) compared to modern RISC CPUs (“you want a fancy addressing mode? Do the math yourself!”)