意図しないvecto.asmに飛んでしまいます。

下記の記述をするとvecto.asmに飛んでしまいます。

float a = 0;

float b = 0;

long c[15];

 

 

a = (float)c[0] * 0.25 * b ;

 

記述がおかしいでしょうか?

環境は

Renesas e² studio

Version: 7.8.0

RZT1マイコンを使用しています。

Parents
  • 洋輔さん、
    かふぇルネ管理人です。
    吉光屋の次男坊さんが指摘されていますように、洋輔さんのお問合せはRZマイコンに関するものだと思われます。
    本日(7/14)中に本スレッドをRZフォーラムに移動しようと思いますので、よろしくお願いします。
    以上、よろしくお願いします。
Reply
  • 洋輔さん、
    かふぇルネ管理人です。
    吉光屋の次男坊さんが指摘されていますように、洋輔さんのお問合せはRZマイコンに関するものだと思われます。
    本日(7/14)中に本スレッドをRZフォーラムに移動しようと思いますので、よろしくお願いします。
    以上、よろしくお願いします。
Children
  • 管理人様吉光屋の次男坊様
    ご指摘ありがとうございます。よろしくお願いします。
  • 洋輔さん、
    かふぇルネ管理人です。
    RZフォーラムへ移動させて頂きました。
    以上、よろしくお願いします。
  • 管理人様
    ありがとうございます。

    またこちら解決しました。
    0.25の箇所にfを記載すればよいとわかりました。
    アセンブラ表記で
    vcvt.f64.f32 d16, s15

    fをつければ下記になります。
    vcvt.f32.f32 s15, s15

    なぜ下記がいけないのかはわかってませんが・・・
    vcvt.f64.f32 d16, s15
  • 洋輔 さん
    ほや です。こんにちは。

    たぶん、ですが f を付けないとdoubleで計算されるから、だと思います。

    FPUの初期化が抜けてて倍精度演算できなくなっている、などマイコンの使い方に問題があるかもしれません。
    もしくはコンパイル時のアーキテクチャ指定と実際のデバイスの仕様が合っていないとか。

  • ほやさん

    いつもありがとうございます。仕様をもう一度確認してみます。
    とりあえずはf付きて対応しますが・・・。

    ちなみに下記の計算はできるんですよね・・・
    a = (float)c[0] * 0.25 ;