閉じる

エンディアン

Intel系の CPUだと下位バイトがメモリの若いアドレスにいるけど、Motorola系の場合は上位バイトが若いアドレスにいる。
思わぬところでこれにはまるときがある。
今回は printf。
「%d」に「long int」を与えているような場合*1 、Intel系だと 16bitに収まるような値の場合に期待通りに動いているように見えちゃうのよね。
Motorola系の場合、「0」としか表示されなくて「???」となる。


*1 今回のターゲットは LP32モデルなのでもバグである

コメントを残す

メールアドレスが公開されることはありません。必須項目には印がついています *

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)