This is a quick introduction to software development for the MRISC32 architecture. The MRISC32 architecture is a novel 32-bit Vector/RISC instruction set architecture, designed to be efficient, powerful, forward looking and easy to work with. It is also open and completely free for anyone to use as they wish. The compiler For compiling programs there …
Category: Software Development
I want to show a thing (C++ to machine code)
If you are like me and spend a lot of time looking at assembly language output from compilers, this article may not provide much new information. If not, however, you will hopefully find it interesting. The thing I want to show is how seemingly lengthy and complex C++ code can be compiled into very compact …
Three fundamental flaws of SIMD ISA:s
According to Flynn’s taxonomy SIMD refers to a computer architecture that can process multiple data streams with a single instruction (i.e. “Single Instruction stream, Multiple Data streams”). There are different taxonomies, and within those several different sub-categories and architectures that classify as “SIMD”. In this post, however, I refer to packed SIMD ISA:s, i.e. the …
IEEE 754 suggestion: A “core” subset
I’ve been developing software for over 30 years, and during those years I have frequently come across problems relating to a few features of the IEEE 754 floating point standard, namely: Denormalized numbers Configurable rounding modes Recently I have also developed a custom CPU (MRISC32), and when doing the hardware implementation of the floating point …
Benchmarking OS primitives
Lately I have taken some interest in the hardware and software of C++ build servers. One of the things that I have noticed is that there is a significant performance difference between Windows and Linux machines for common build tasks, such as cloning a git repository, running CMake and caching build results. Some of these differences …
Faster C++ builds
The C++ language is known for its long compilation times. While that is largely true (compared to many other languages), C++ is also one of the most mature languages out there, with rich tool support. There are now a lot of tools and good practices that can be applied to most C++ projects to help …
A stable mainline branching model for Git
In this article I will describe a Git workflow and branching model that I have used successfully in several projects and companies for many years now. It scales from small to large teams, and it fixes some common problems with Continuous Integration and GitFlow, for instance. Moreover, it is very simple and results in a nice Git …
GitHub pull request != code review
This article tries to summarize some of the problems that I have come across when trying to use GitHub pull requests for doing code reviews. In summary: It was not all pleasant, and by the way I apologize for this rather harsh rant. The (single) good thing first The one thing that GitHub gets right …
Git history: work log vs recipe
This is a follow-up article to A tidy, linear Git history, going into more details of why I think that rewriting your Git commit history (i.e. rebasing) is usually the right thing to do. Two different history models When it comes to Git history (or any other version control system history, for that matter), there …
A tidy, linear Git history
One of the things that is overlooked in many Git based projects is the value of a linear commit history. In fact, many tools and guidelines discourage Git workflows that aim for a linear history. I find this sad, since a tidy history is very valuable, and there is a straight forward workflow that ensures …