odも動作が謎

odを使ってバイナリを見てみると、テキストファイルであってもバイナリの表示はリトルエンディアンちっくになった。
元ファイルが、

$ cat binary_text
abcdefgh
12345676

なのだけど、そのバイナリ表示は

$ od -x binary_text
0000000 6261 6463 6665 6867 310a 3332 3534 3736
0000020 0a36
0000022

どうも、バイトごとに逆転しているように見える。
Cygwin上でodを行ったので、同じファイルをWindows上でも確認してみた。(使用ソフト:Stirling 特にこだわりはない)

00000000 61 62 63 64 65 66 67 68 0A 31 32 33 34 35 36 37
00000010 36 0A

逆転はない…。
man odも見てみて、どうやらAsciiでも表示できるそうなので、ちょいと確認してみると、

$ od -c binary_text
0000000 a  b  c  d  e  f  g  h \n  1  2  3  4  5  6  7
0000020 6 \n
0000022

と、こちらでも逆転はない。
Windows上で見た場合についても考慮に入れると、od上でバイナリを見たときにのみ 2byte ごとに逆転していると考えるのが筋だと思う。が、なんでこんな動作をしているのか理解に苦しむ。
1バイトごとにデータを取得してスタックに積み、2バイトでポップする?いやいやそんな、2バイトでポップするくらいならスタックに積むなって話だし。半ワードげっちゅしてから逆転させる?いやいやそれも特殊な動きすぎるように思う。正直わからん。


なんでこんなことやってるかって言うと、例の「ライブラリ関数を使わない」縛りの上で練習プログラムを作っていたところ動作に失敗したので、その原因をコードではなくテキストファイルに求めた結果だったりする。
えー、だってシステムコールのread()がうまく動かなかったんですものー。
(まず間違いなくソースコードを間違えている)