2015/09/16

[arm]引数はr0~r3

関数呼び出しの時に引数があるが、引数はスタックに積まずにレジスタで渡すことが多い。
引数が少ないときは、だいたいそうだ。
多くなるとスタックを使わないとどうしようもなくなるので、効率が落ちる。
だから「引数はなるべく少なめに」ということになる。

では、ARMはどんな感じになるのか。
やりたいのは昨日の続きで、引数を見たいだけなのだ。

http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.dui0205ij/Chdichhg.html

これを見ると、RealViewというかARM社のコンパイラの仕様なのかになるのだろうが、r0~r3が入力パラメータとして使われる、とある。
なお、戻り値はr0になるみたいだ。

覚えておいて、損はあるまい。


実は、nRF52のapp_uart_log()を使って引数を出力したかったのだけど、app_error_handler()でやろうとしてもだめだったのだ。
WFIしてもWFEしても、はたまたapp_uart_flush()をしても、吐いてくれない。
その前にどこかで終わってしまっているのだろうか・・・。

場所がわかっているからブレークポイントで止めてみたのだが、有効な値じゃない感じがしている。
r0は0x16で、error_codeに当たるはずなのだが、nrf_error.hを見ても該当しない。
p_file_nameに一番の期待をしたのだが、r02には0xffが。あまり期待せずにアドレス0xffを見に行ったが、ASCIIっぽいものは入っていなかった。
うーーーん・・・。

0 件のコメント:

コメントを投稿

コメントありがとうございます。
スパムかもしれない、と私が思ったら、
申し訳ないですが勝手に削除することもあります。