The ARP32 CPU has the following restrictions on the programming model:
- Long Long (as 64 bit) is not supported natively in the architecture. ‘long long’ is supported via emulation in the Run Time Support (RTS) library. Since this is non-standard and sub-optimal, use of long may severely degrade performance. Hence, it is highly recommended not to use the C ‘long long’ datatype.
- 64-bit arithmetic. Add/sub of more than 32-bit values (operand or results) requires ADDC/SUBC/BC (addition with carry, subtraction with borrow, branch on carry) instructions that are not supported in the ARP32 CPU. Again, it is possible to emulate this in RTS but it is a sub-optimal implementation and it is not recommended.
- Multi-threading via mutex is not supported in the architecture. In the ARP32 CPU, it does not implement an “EXCLUSIVE access instruction” to implement a ‘proper’ mutex in RTS. A polling based multi-threading is still possible.