-
アセンブリ式は常に符号なしです。同じ式でも、アセンブリと C/C++ では、値が異なる場合があります。例えば、
MOV r0, #(-33554432 / 2) // 結果は 0x7f000000
MOV r0, #__cpp(-33554432 / 2) // 結果は 0xff000000
-
先行ゼロを伴うアセンブリの数値は 10 進数です。例えば、
MOV r0, #0700 // 10 進数 700
MOV r0, #__cpp(0700) // 8 進数 0700 == 10 進数 448
-
アセンブリの演算子の優先順位は、C/C++ での優先順位と異なります。例えば、
MOV r0, #(0x23 :AND: 0xf + 1) // ((0x23 & 0xf) + 1) => 4
MOV r0, #__cpp(0x23 & 0xf + 1) // (0x23 & (0xf + 1)) => 0
-
アセンブリで記述される文字列の終端は NUL
ではありません。
DCB "Hello world!" // 12 バイト(末尾に NUL がない)
DCB __cpp("Hello world!") // 13 バイト(末尾に NUL がある)