やまものブログ

メモ書きブログです (^_^;A

ARM アセンブラを C 言語から呼び出す ー 戻り値の利用

昨日の簡単な関数 kakeruni (掛ける2) を戻り値を使うように変更しました。
変更した箇所を赤で強調しています。

main.c
#include <stdio.h>

extern int kakeruni(int b);

int main(int argc, char *argv[]){
    int v;
    v = atoi(argv[1]);
    printf("%d\n", v);
    v = kakeruni(v);
    printf("%d\n", v);
    return 0;
}


kakeruni.s
.eabi_attribute Tag_ABI_align8_preserved,1
.text
.global    kakeruni
.type   kakeruni, %function
kakeruni:
    MOV  R0, R0, LSL #1;
    BX   lr;



コンパイルの手順と実行結果は昨日と同じです。
ここで確認したかったことは関数の戻り値は R0 に格納すればよいということでした。
これに関連して関数の戻り値、呼び出しについて考察たので、別の記事として次に投稿します