こんにちは,小坂です。
「arg_ptr-=2; /*なぜかわからないが,ここで2を引かないと動かない*/」
の問題はとりあえず解決しました。
TK303さんより,なんらかの組み合わせで解決する方法があることがわかり,励みになりました。
わかってみるととんでもないところに誤りが見つかるものですね。
問題はスタートアップルーチンにありました。
MOV.L #H'FF80,ER7 ;スタックポインタ設定
これが正解ですが,AKI3664F付属のサンプルプログラムのいくつかは
MOV.L #H'FF7F,ER7 ;スタックポインタ設定
と書いてあり,私が無批判に誤った方をコピー&ペーストしてしまった結果でした。
push命令ではアドレスが2または4しか変化しませんし,2または4を引いてからレジスタ値を退避させるので,スタックポインタの設定はFF80が正解でした。
stdarg.h中には,アドレスが奇数だったらむりやり偶数にしてしまえということが書いてあり(なんのためかわかりませんが),これとの組み合わせで変なことが起こっていたようです。
お騒がせ致しました。
****************************************************
〒193 0997 八王子市椚田町1220-2 東京工業高等専門学校
情報工学科 小坂敏文 phone0426-68-5199 Fax68-5098