ARM
昨日のアセンブラを、もう少し最適化してみたいと思います。
前の、RGB565→RGB565の転送を透過転送用functorで組んだルーチンをアセンブラで出力してみると、8ループ展開の内部は次のようになってました。
いやね、おかしいとは思ってたんですよ。 ハーフワードの転送をしてると、 ADD r6,r14,r8,LSL #2 LDR r4,[r6,#0] こんな感じの記述が沢山出てくるわけですよ。 なんでLSL #2なんだ?LSL #1の間違いじゃないのか? まあ、ARM様は自分の計り知れない崇高な計算…
ということでThumbモードを試してみました。 まず、BREWスレによると、#pragmaは使用出来ないみたい……(;´Д`) 実際にやってみましたが出来ませんでした。 というか、Thumbモードでコンパイルするにはarmcc,armcppではなくて、tcc,tcppを使わないといけない…
今、BREWスレでThumbモードにするとコードサイズが減る、と言う話が出ている。 どうやらコードサイズが30%ほど小さくなるらしい。非常に便利だ。 で、自分もThumbモードで組んでみよう……と思ったんだけど、そもそもどうやってThumbモードにするんだろう? と…
今日、ARMのfromELFのリファレンスを見てたんですが、なんと、こいつはアセンブラコードを吐き出してくれるんですよ。 出し方は、 fromelf -c -o <出力ファイル> <ELFファイル>こんな感じです。 QUALCOMM標準のMakefileを使うなら、 $(HEXTOOL) -c -o $(TARGET).asm $(TAR</elfファイル>…
ARMの命令は、x86系の命令とは全然違うので、どうやって最適化するのかが全然わかんないです(;´Д`) 例えば、画像の転送をする際に、 for(i=0;ifor(j=0;jこんなのを書いたとしても、ほんとに速度は上がるのだろうか? ARMの命令を見てみたけど、オフセット…
どうやら落ちるのは、ARMのバグではないか、ということらしいです(;´Д`) ということは、今まで自分がやってきた苦労って一体……(;´Д`) こういうバグとかにはあまり触れたくなかったのに(;つД`) しかも、singletonは別に無くても困らないそうです。 …