[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
(toppers-users 3176) TOPPERS/ASP移植 makeoffset.cおよびoffset.incについて
- To: <users at toppers jp>
- From: "kouta wada" <kouta wada at konicaminolta jp>
- Date: Tue, 13 Apr 2010 18:53:37 +0900
はじめまして。
コニカミノルタセンシング派遣のKota Wadaと申します。
TOPPERS/ASPをR32Cへ移植を行っています。
移植方針としてはM32C-HEWを使用して、
R32C用に変更しようとしています。
そこで質問が2点あります。
1) makeoffset.cのコンパイルエラーの対処方法について
2) offset.incの作成について(R32C用の作成方法はありますか?)
*******
1) makeoffset.cのコンパイルエラーの対処方法について
HEWの環境で、makeoffset.cをコンパイルすると
以下のコンパイルエラーが発生してしまいます。
(エラー箇所)
static const TINIB ____BEGIN_OFF_TINIB_task = {
0 , NULL , (TASK)1 , 0 , 0 , NULL , 0 , NULL
};
(エラー内容)
C:\Workspace\asp\arch\m32c_nc308\makeoffset.c(226) : [Error(ccom)] invalid '=' operand
C:\Workspace\asp\arch\m32c_nc308\makeoffset.c(226) : [Error(ccom)] invalid '=' operand
C:\Workspace\asp\arch\m32c_nc308\makeoffset.c(226) : [Error(ccom)] invalid '=' operand
C:\Workspace\asp\arch\m32c_nc308\makeoffset.c(226) : [Warning(ccom)] init elements overflow,ignored
TINB型は以下のようにtypedefされています。
typedef struct task_initialization_block {
ATR tskatr; /* タスク属性 */
intptr_t exinf; /* タスクの拡張情報 */
TASK task; /* タスクの起動番地 */
uint_t ipriority; /* タスクの起動時優先度(内部表現) */
SIZE stksz; /* スタック領域のサイズ(丸めた値) */
void *stk; /* スタック領域の先頭番地 */
ATR texatr; /* タスク例外処理ルーチン属性 */
TEXRTN texrtn; /* タスク例外処理ルーチンの起動番地 */
} TINIB;
NULLはNC100(R32CのCコンパイラ)のstddef.hで
以下のように定義されていますので、
#define NULL ((void _far *)0)
intptr_t型(longのtypedef)にNULLを直接入れることで
エラーとなったと思われます。
そこで、以下のようにNULLをキャストすることで、
コンパイルエラーは解消しましたが、対応に問題はありませんでしょうか。
static const TINIB ____BEGIN_OFF_TINIB_task = {
0 , (intptr_t)NULL , (TASK)1 , 0 , 0 , NULL , 0 , NULL
};
*******
2) offset.incの作成について
makeoffset.cのコメントにある、「offset.incの作り方」を参考に
makeoffset.cをコンパイルし、makeoffset.a30を出力しましたが、
R32C用コンパイラのため、「! BEGIN」に対応したコードがありません。
R32C用コンパイラから吐き出されるコードでoffset.incを作成する
方法はありませんでしょうか。
*******
※初めての投稿で、必要な情報が抜けているかもしれません。
その点はご指摘を頂ければと思います。