ARM bare-metal programming in D (cont) - volatile

Walter Bright newshound2 at digitalmars.com
Fri Oct 25 13:04:27 PDT 2013


On 10/24/2013 9:30 PM, Mike wrote:
> Using peek and poke functions is, well, nah... Better methods exist.  Using
> inline assembly is a reasonable alternative, as is linking to an external C
> library, but why use D then?  Is low-level/embedded software development a
> design goal of the D language?

I've written device drivers and embedded systems. The quantity of code that 
deals with memory-mapped I/O is a very, very small part of those programs. The 
subset of that code that needs to exactly control the read and write cycles is 
tinier still. (For example, when writing to a memory-mapped video buffer, such 
control is quite unnecessary.)

Any of the methods I presented are not a significant burden.

Adding two lines of inline assembler to get exactly what you want isn't hard, 
and you can hide it behind a mixin if you like.

And, of course, you'll still need inline assembler to deal with the other 
system-type operations needed for embedded systems work. For example, setting up 
the program stack, setting the segment registers, etc. No language provides 
support for them outside of inline assembler or assembler intrinsics.


More information about the Digitalmars-d mailing list