Recent Posts

PrivateEye 3.00 with a couple of fixes

by David Thomas on

An update to my RISC OS image viewer PrivateEye is now available with a couple of small but essential fixes for anyone using a Raspberry Pi 3, or using a version of RISC OS with zero page protection enabled:

Additionally it was rebuilt using the latest DDE27 tools from RISC OS Open Ltd.

Read article...

ARM training fixes

by David Thomas on

There have been a couple of recent changes to the ARM courses. Here’s a summary (with reporter in brackets):

Read article...

ARM training fixes

by David Thomas on

There have been a couple of recent fixes to the ARM courses. Here’s a summary (with reporter in brackets):

In fact, while fixing the aliases diagram I re-drew all of the Introduction to ARM diagrams in Affinity Designer.

Read article...

Branchless code sequences

by David Thomas on

Sometimes when programming we need to tune a small portion of code which is critical to an implementation. For example an inner loop may involve a pixel bashing operation which dominates the program’s overall performance. If this operation uses a comparison, and that results in the compiled code branching, it can hurt performance on pipelined CPUs. It may be better to find a branch-free alternative even if it appears to make the code slightly more complex.

But how do we find these branch-free alternatives? Sufficiently small sequences can be discovered with a superoptimiser program. Superoptimisers are not as clever as the name might suggest: they are typically an exhaustive search through a (virtual) instruction set, trying every conceivable permutation of instructions until it finds one which—for the given input values—works.

Two examples of this are GNU superopt (1995) and Aha! - A Hacker’s Assistant (2008). In this article I’ll only discuss Aha.

Read article...

ARM training fixes

by David Thomas on

There have been some recent fixes to the ARM course pages. Here’s a summary with (reporter in brackets):

Read article...