関数呼び出しの時に引数があるが、引数はスタックに積まずにレジスタで渡すことが多い。
引数が少ないときは、だいたいそうだ。
多くなるとスタックを使わないとどうしようもなくなるので、効率が落ちる。
だから「引数はなるべく少なめに」ということになる。
では、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 件のコメント:
コメントを投稿
コメントありがとうございます。
スパムかもしれない、と私が思ったら、
申し訳ないですが勝手に削除することもあります。
注: コメントを投稿できるのは、このブログのメンバーだけです。