webmasterのブログ

事務所を移転しました。

これまで、弊社事務所は大阪市中央区安土町 1-7-20 新トヤマビル4Fでしたが、このたび同ビルの2Fに移転しました。

まだ移転直後で、とても片付いているとは言えない状況です。
5月中旬ごろには落ち着くかと思いますので、機会がございましたらお立ち寄りください。

新年あけましておめでとうございます。

早いもので、2017年もすでに3日目になってしまいました。ご挨拶が送れましたが、新年あけましておめでとうございます。

当サイトは長期間にわたって更新していませんでした。しかしながら、今後は何らかの形で更新を再開していきたいと考えていますので、どうかよろしくお願いいたします。

電話番号変更のご案内

今年8月より弊社は移転し、株式会社クローバーフィールドと事務所を共有しています。
このたび、代表電話番号も株式会社クローバーフィールドと一本化することにしました。

弊社とクローバーフィールドは協力しながら仕事を進めています。
弊社にお問い合わせいただいたお仕事については、両社のいずれかで対応させていただきたいと考えています。

弊社または株式会社クローバーフィールドで受注いたします。

弊社では、従来通りソフトウェアの開発を行って参ります。

より多くの案件をこなすため、関連会社である株式会社クローバーフィールドで受注させていただく場合がございます。

株式会社クローバーフィールドは、弊社代表の高木が取締役を勤める会社であり、どちらで受注した場合でも誠意をもって対応させていただきます。

詳細はご依頼いただいた方に個別にお知らせいたしますので、よろしくお願いいたします。

ウェブサイトの移行作業中

長い間、当サイトの更新ができておらず申し訳ありません。

現在、ウェブサイトの移行作業を行っています。移行先のサイトは下記になります。

http://www.kijineko.com/

だたし、このURLは暫定的なものです。移行作業が完了した時点で、両方のサイトを統合し、改めて http://www.kijineko.co.jp/ とする予定です。

本来であれば今年の春頃には移行作業を終える予定でしたが、なかなか進んでいない状況です。今後何らかのてこ入れを行っていきたいと考えていますので、お待ちください。

6月8日~11日は休業日になります

都合により、6月8日(金)~11日(月)は一部を除いて休業とさせていただきます。この期間、お電話への応対ができなくなります。メールおよびFAXは受信可能ですが、対応が遅れることを予めご了承ください。

ご迷惑をおかけしますが、よろしくお願いいたします。

きじねこ回路設計リニューアル!

この度、きじねこ回路設計をリニューアル致しました。

回路設計を含めた製品化へのお問い合わせが増えております。
今後ともより一層、皆様のお手伝いが出来るよう尽力していく所存です。

パートナー技術者募集

弊社業務をお手伝いいただけるパートナー技術者を募集します。

[R8C][M16C] インライン関数とインラインアセンブラとテンプレートの関係

NC30のC++には、2種類のインライン関数があります。_inlineとinlineです。Cの場合には、これらは単に名前の違いだけで機能的な差異はありません。しかし、C++では全く別のものなので注意が必要です。

_inlineはCでも使える拡張機能で、ごく特殊なケースを除けば、確実にインライン置換されます。その代り、さまざまな制約があります。例えば、_inlineを使ったインライン関数内で静的オブジェクトを宣言すると、警告が出た上、翻訳単位ごとに別の実体が生成されます。また、再帰呼び出しもできなければ、関数へのポインタも取得できません。

inlineを使ったインライン関数はC++の仕様に基づきますが、デフォルトではインライン置換されません。インライン置換させるためには、-Ostatic_to_inlineおよび-Oforward_function_to_inlineオプションを付けてコンパイルする必要があります。もちろん、これらのオプションを付けたからといって、必ずインライン置換されるわけではありません。

[R8C][M16C] #pragma ADDRESSの調査

NC30には、指定したアドレスにオブジェクトを配置するための#pragma ADDRESS指令があります。これは通常、SFRにアクセスするために用いるもので、*(volatile unsigned char*)0x0052 などと書くより便利です。また、1ビットのビットフィールドにアクセスする場合には、bset などのビット命令に展開されるという強みもあります。

今回、まず初めに調査したのは、CとC++に共通した内容として、#pragma ADDRESSで使用したオブジェクトを直接使用した場合は効率のよいコードが生成されるけれども、ポインタや(C++の場合は)参照を使って間接的にアクセスした場合はどうかということです。実際試してみた結果、間接的にアクセスした場合はビット命令は生成されず、通常のオブジェクトと同じように扱われることが分かりました。

次に調査したのは、C++で#pragma ADDRESS指令を使う場合、オブジェクト名の指定はどの程度のことができるのかということです。というのは、Cであればオブジェクト名は単純な識別子で必ず表現できますが、C++の場合は、名前空間やクラス名やテンプレート引数が絡んでくるからです。

コンテンツ配信