I honestly have no idea.
I’ll leave that one to @jonne to answer.
I believe (don’t quote me on this) that actually the progmem isn’t really progmem, it’s simulated with flash memory (or possibly write protected) and consequently there’s no special instruction for reading from progmem like there is on the AVR, which means you don’t need a special macro for either reading progmem or putting a variable into progmem.
From what I’ve heard the compiler tries to stick anything marked
constexpr in progmem, and I’m guessing it will possibly try to put other things in progmem following the same rules as a compiler compiling for desktop would for trying to decide what it can put in the ‘constant data’ section of an executable.
So in other words, don’t worry about it too much and just mark anything you don’t change as
const (which I try to do anyway - using
const on your variables signals to other code readers that you don’t change that variable at any point).
(Not directly related, but you might be interested in single static assignment form, a technique used by compliers such as GCC to determine which variables are truly
const and to do reaching definition analysis.)
Full C++11 (and later). Full standard library.
(Unsurprisingly I am immensely happy about this
You can even use dynamic allocation as long as you don’t overdo it.
If you do though, I’d suggest using smart pointers (unless you find them to have a measurable significant negative impact on speed or size).
Not quite the same but I wrote a C++11 for C++03 programmers (which I didn’t get around to finishing because C++11 was a massive update to the language).
If you’re already experienced with C++ then I can’t think of much more that you’d need to know than:
- What’s the chip like? - The chip is a 32 bit ARM chip
- What’s the ISA like? - The instruction set is the 16-bit Thumb instruction set without full 32-bit ARM instructions (and it’s documented here and here)
- Is the stdlib available? - Yes, completely
- Whether there’s an FPU? - Don’t know
- What’s the API like? - Documented here
- What are the other APIs like? - Documented here, very C++, many classes (and even a few templates)