I have a few comments I thought I'd add.
Quote:
Originally Posted by Bsteckler
2) it can support strings up to 128 bytes in length, and can natively support byte, word, halfword, and doubleword data types
4) the calling convention of the PowerPC passes arguments to functions into the registers (has no stack) whereas an x86 sends them to the stack, as such, programming errors and adressing variables outside of an array are less likely to cause a crash on a PPC
9) an integer divide by zero operation returns a 0 on PowerPCs, but floating point divide by zero operations cause a crash
|
2. String instructions such as the ones to convert from number to string have limits, but this doesn't mean that there are limits on string sizes once you are using libraries for C or LV. In reality, LV strings are limited to 2GB, and C ones are probably limited to 4GB. In addition to string sizes, the PPC is rather strict on alignment, generally words need to be on a 2 byte boundary, longs on a 4, I believe doubles need to be on a four, and there is a performance advantage to eight byte alignment on some PPC architectures, I don't really think that applies to this version.
4) Since you have an OS and libraries you are interoperating with, the ABI (application binary interface) is equally important to pay attention to as the HW architecture. The EABI defines the registers to use for stack and stack linkage. This defines how the linkage between function calls fit on the stack and are pointed to by registers. This also defines which types go in registers by value, which by reference, and at what point things may go on the stack. I don't know about the VXWorks ABI, but I'm guessing it is something like the MS and Apple one. Arrays are not stored in registers, and addressing outside of an array or other storage is still very likely to crash or cause an exception.
9) This crash is actually a signaling, and the exception settings define whether signaling is on or off. Generally the signaling is off and the results will result in an infinity -infinity, or a NaN depending on the number being divided by zero. For details refer to the IEEE 854 spec.
The other thing to familiarize yourself with is how the language handles these issues. C, C++, and LV will all help with these areas to differing degrees.
Greg McKaskle