私はHCS12コントローラ用のCosmicコンパイラーからCode Warrior 5.2にコードを移植しようとしていますが、別の関数内にある関数を呼び出すと、最初の関数に渡される値が正しく更新されません。
例: void Update_Display(uint8_t update)
{
LCD_srWriteToDisplay(文字列1、SCREEN_LINE_WIDTH、20、0);
}
LCD_srWriteToDisplay 関数内で、引数は渡した値と同じではありません。
こんにちは@Aswin_5232さん、
TN234、 https://www.nxp.com/docs/en/application-note/TN234.pdf
「ANSI-C 以外のキーワードの移植」セクションでこの問題について説明しており、CW では near 呼び出しと far 呼び出しで異なる呼び出し規約を使用するため、関数も含めて、Cosmic の @near/@far を CodeWarrior の__near/__ far に置き換える必要があることが示されています。
関数がバンク コード内にあっても __far として宣言されていない場合、CW は near 呼び出しを生成し、関数が間違ったパラメータを読み取る原因になります。
よろしくお願いいたします。
ダニエル