Cのソースにアセンブラのコードを埋め込むには

平成20年7月26日

インラインアセンブラの記述

    C言語の中からアセンブラを使うには、インラインアセンブラを使うのが便利です。

    アセンブラのソースを埋め込むには、C言語ソースの先頭に#pragma asmと書きます。

    そして、埋め込みたいアセンブラコードを#asm 〜 #endasmで囲みます。

    #pragma asm
    #include "trgbios.h"

    void main() {
        #asm
        MOVW AX,SP
        #endasm

    }
     

 

    もしくは、__asm(文字列リテラル) 文を使うそうです。
    CC78K0のヘルプによれば、次のような使い方で変数を読み出せるようです。

    #pragma asm

    int a , b ;

    void main ( ) {
    __asm ( " movw ax , !_a  ; ax <- a " ) ;
    __asm ( " movw !_b , ax  ; b <- ax " ) ;
    }
     

コンパイラオプションの設定

    上記のインラインアセンブラを使用すると、リンク時にエラーが出ることがあります。

    78K0 Linker W4.00  [ 4 Jul 2007]
       Copyright(C) NEC Electronics Corporation 1990,2007
     
    RA78K0 error F3006: File not found 'main.rel'
    Program Aborted.
     
    Build Total error(s) : 1  Total warning(s) : 2

    このエラーを回避するには、PM+のメニューから、[ツール]->[コンパイラオプションの設定]を選び、出力タブを開きます。

    そして、アセンブラ・ソース・モジュール・ファイルの出力をチェックします。

    img1.png

    これでリンクが通るようになるようです。

 

chickens_back.gif 戻る

 Copyright(C) 2008 NAITOU Ryuji. All rights reserved. 無断転載を禁ず