They say that in order to understand recursion, you must first understand recursion. Once you master that concept, you might decide that it’s time to write your own compiler that can compile itself as a fun side project. According to [Warren] aka [DoctorWkt], who documented every step of writing this C compiler from scratch, a true compiler will be able to do that.
Some of the goals for the project included self-compiling, focusing on a real hardware platform, practicality, and simplicity. [Warren] outlines a lot of the theory of compilers as well, including all the lexical, grammar, and semantic analysis and then the final translation into assembly language, but really focuses on making this compiler one for practical use rather than just a theoretical implementation. He focuses on Intel x86-64 and 32-bit ARM platforms too, which are widely available.
This project is a long read and very thoroughly documented at around 100,000 words, so if you’ve ever been interested in compilers this is a great place to start. There are a lot of other great compiler tools floating around too, like the Compiler Explorer which shows you generated code as you write in a higher level language.
We will admit it: mostly when we see a homebrew CPU design on an FPGA, it is a simple design that wouldn’t raise any eyebrows in the 1970s or 1980s. Not so with [Henry Wong’s] design, though. His x86-like design does superscalar out-of-order execution, just like big commercial modern CPUs. Of course [Henry] designs CPU architectures for Intel, so that’s not surprising. You can see a very detailed talk on the design in the video, below. You can also read the entire thesis project.
[Henry] starts out with a description of FPGAs and soft processors. He also covers the use of multiple instruction issue to increase the virtual clock rate of a CPU. In other words, if a 100 MHz CPU can do one instruction at a time, it won’t be any faster — in theory — than a 50 MHz CPU that can do two instructions at once. Of course, trying to do two at once has some overhead, so that won’t be completely true.
Several months ago, a strange Kickstarter project from ‘Team IoT’ appeared that seemed too good to be true. The Atomic Pi was billed as a high-power alternative to the Raspberry Pi, and the specs are amazing. For thirty five American buckaroos, you get a single board computer with an Intel processor. You get 16 Gigs of eMMC Flash, more than enough for a basic Linux system and even a cut-down version of Windows 10. You have WiFi, you have Bluetooth, you have a real time clock, something so many of the other single board computers forget. The best part? It’s only thirty five dollars.
Naturally, people lost their minds. There are many challengers to the Raspberry Pi, but nothing so far can beat the Pi on both price and performance. Could the Atomic Pi be the single board computer that finally brings the folks from Cambridge to their knees? Is this the computer that will revolutionize STEM education, get on a postage stamp, and sell tens of millions of units?
No. The answer is no. While I’m not allowed to call the Atomic Pi “literal garbage” because our editors insist on the technicality that it’s “surplus” because they were purchased before they hit the trash cans, there will be no community built around this thirty five dollar single board computer. This is a piece of electronic flotsam that will go down in history right next to the Ouya console. There will be no new Atomic Pis made, and I highly doubt there will ever be any software updates. Come throw your money away on silicon, fiberglass and metal detritus! Or maybe you have a use for this thing. Meet the Atomic Pi!
The world is full of single board computers that want a slice of the Raspberry Pi action. Most of them are terrible. But fools and their money, yadda yadda, and there’s a new sucker born every minute. The latest contender to the Raspberry Pi is the Atomic Pi. It’s an x86-based single board computer that costs $35, shipped to your door. Is it worth it? Is it even in the same market as a Raspberry Pi? Or is it just a small budget computer without a box? I have no idea.
With that said, the Atomic Pi comes with an Intel Atom x5-Z8350 with Intel HD Graphics (Cherry Trail). There is 2 GB of DDR3L-16000, 16 GB of eMMC, and an SD slot for storage. Connectivity is a full HDMI port (primary audio out), USB 3.0 and 2.0 ports, a Mediatec RT5572 used for WiFi, a Qualcomm CSR8510 for Bluetooth 4.0, a “Legitimate licensed BIOS”, and a real-time clock. Overall, you’re looking at a top-of-the-line tablet computer from four years ago. One that would run Windows.
To use all the features of the Atomic Pi, you will need to buy a $15 breakout board to supply power to the board, and use a large industrial power supply, the kind you would normally find bolted to a RepRap or a homemade CNC machine. You will need to supply both 5 V and 12 V to the board if you would like to use the Class D audio amplifier, but if you only want to use audio over HDMI, supplying only 5 V will do. If you want to boot this board, it looks like you’ll need to bring a USB/TTL cable to make everything work. This may be a tough sell to a crowd with zero experience booting a bare Linux system. That said, it runs Nintendo 64 emulators well, which is the only reason people buy Raspberry Pis anyway.
Is the Atomic Pi the single board computer you need? I don’t know. But we’ve got an Atomic Pi on order, and we’re ready to go with a full review when it show up.
It’s a thankless task, searching for a job. You send off your CV, or resume, and it joins a thousand other destined for the round file. What on earth can you do to make your career stand out, and catch the eye of the recruiter?
If you are [Pablo Jiménez Mateo], the answer is straightforward enough. Simply combine the document as a PDF with an x86 bootloader, to make a readable document that will also boot an x86 computer system. He can do this relatively easily by prepending the bootloader file to the PDF, as long as the “%PDF” header of the CV remains within the first 1024 bytes it will remain a readable document. Which it does, though as our GitHub screenshot shows, not in all PDF readers.
A bootable PDF is pretty cool and we have to salute his effort in getting it in front of us in the hope of career boost, but it would be fair to admit that it’s a trick that has been done before. So it’s time to turn attention to the bootloader itself, whose code comes in the form of an extremely well-commented assembly file that loads some sprites and a border to a VGA screen that looks as though it might be the first room in a top-down adventure game. Through the code we can gain an appreciation of just how simple a bootloader can be, and that in itself makes this project worth a second look.
We missed this Blackhat talk back in August, but it’s so good we’re glad to find out about it now. [Christopher Domas] details his obsession with hidden processor instructions, and how he discovered an intentional backdoor in certain x86 processors. These processors have a secondary RISC core, and an undocumented procedure to run code on that core, bypassing the normal user/kernel separation mechanisms.
The result is that these specific processors have an intentional mechanism that allows any unprivileged user to jump directly to root level access. The most fascinating part of the talk is the methodical approach [Domas] took to discover the details of this undocumented feature. Once he had an idea of what he was looking for, he automated the process of checking every possible x86 instruction, looking for the one instruction that allowed running code on that extra core. The whole talk is entertaining and instructional, check it out after the break!
Oh, the hijinks that the early days of the PC revolution allowed. Back in the days when a 20MB hard drive was a big deal and MS-DOS 3.1 ruled over every plain beige PC-clone cobbled together by enthusiasts like myself, it was great fun to “set up” someone else’s machine to do something unexpected. This generally amounted to finding an unattended PC — the rooms of the residence hall where I lived in my undergrad days were a target-rich environment in this regard — and throwing something annoying in the AUTOEXEC.BAT file. Hilarity ensued when the mark next booted the machine and was greeted with something like an inverted display or a faked hard drive formatting. Control-G was good to me too.
So it was with a sense of great nostalgia that I watched [Ben Cartwright-Cox]’s recent 35C3 talk on the anatomy and physiology of viruses from the DOS days. Fair warning to the seasoned reader that a sense of temporal distortion is inevitable while watching someone who was born almost a decade after the last meaningful release of MS-DOS discuss its inner workings with such ease. After a great overview of the DOS API elements that were key to getting anything done back then, malware or regular programs alike, he dives into his efforts to mine an archive of old DOS viruses, the payloads of most of which were harmless pranks. He built some tools to find viruses that triggered based on the system date, and used an x86 emulator he designed to test every day between 1980 and 2005. He found about 10,000 malware samples and explored their payloads, everything from well-wishes for the New Year to a bizarre foreshadowing of the Navy Seal Copypasta meme.
We found [Ben]’s talk a real treat, and it’s good to see someone from the current generation take such a deep dive into the ways many of us cut our teeth in the computing world.