/* * 8051 のレジスタバンク使い分けって危うげだった。 * by uratan! 2005.1.10 */ 前作 UZK の EZ-USB のファームウェアで、 <"http://aid.her.jp/uratan/UZK/ez-uzk.html"> 「コードを縮めるためにレジスタバンク使い分けをしてます」、 なぞといけしゃーしゃーとコードを書いていたんですが、 ある点を考慮していないことに気付きました。 それはライブラリです。ライブラリは事前にコンパイルされたコードの 集合ですので、それがどんなオプションでコンパイルされたかもケア しないといかんかったです。 こちら側で NOAREGS オプションを付けてレジスタバンクをいじるのは (たぶん)いいのですが、リンクするライブラリがどういうオプションで コンパイルされているかによってレジスタアクセスの食い違いができると 動かないですね。 なのでライブラリ Ezusb.lib 内の関数を呼び出す関数は、必ずレジスタ バンク 0 を使っている必要があり、そうでないと引数、戻り値の受渡しが 行われないです。 注意しましょう > 自分 ---- uratan@miomio.jp