sin関数の計算結果がGR-SAKURAと違う?

ド素人ですw。以前にGR-SAKURAのフォーラムで「8×8×8のLED-CUBEを作ったけど、うまく動かない」で助けて頂いた者です。

https://japan.renesasrulz.com/gr_user_forum_japanese/f/gr-sakura/3717/thread

同じLED-CUBEをとある事情で、SAKURA->秋月で買ったRX621ボードへの移植をしてます。(せっかくかわいいSAKURAボードは、他の用事に使おうかとw)

e2studioで作ってます。なんとかほぼ動くようになったのですが、sinを使ってる所でSAKURAとLEDの表示が違います…。

SAKURAの方のプログラムの該当部分は、

1 :  void ripples(int times, int repeat)
2 :  {
3 :    int i,j,k,z;
4 :    float distance,ztemp;
5 :    clearData();

6 :    for(k=0;k<=repeat;++k) {
7 :      for(i=0;i<=3;++i) {
8 :        for(j=0;j<=3;++j) {
9 :          distance=sqrt((3.5-(float)i)*(3.5-(float)i)+(3.5-(float)j)*(3.5-(float)j));
10:          ztemp=3.5+sin(distance/1.3+(float)k/3.14159)*3.5;
11:          z=(int)(ztemp+0.5);
12:          bitSet(dispData[z][i],j);
13:          bitSet(dispData[z][7-i],j);
14:          bitSet(dispData[z][i],7-j);
15:          bitSet(dispData[z][7-i],7-j);
16:        }
17:      }
18:      LEDDisp(times);
19:      clearData();
20:    }
21:  }

LED表示用配列の辺は見ないで頂いて(移植に伴いbitsetー>ビットシフトに変えてます)、9~11行目の式で、がじぇるねのwebコンパイラでビルドしたSAKURAと、e2studioでビルドしたRX621ボードとで、計算結果が異なる原因が何かあるでしょうか…?

sqrtとsinをsqrtfとsinfに変えてみたりとか、型指定を外してみたりとかしても、変わらない様です。

(printfで計算結果を確認しようとしたのですがうまくいかないので、ほんとに計算結果が違うかどうかは確認できていません…)

どなたかご助言頂けると助かります。

Parents
  • koheiさん、こんにちは。NoMaYです。

    > 「ド素人です」とお断りしたのにww。全然ズレた返答をしたらごめんなさいw。

    ああっ、ごめんなさい、でもちゃんとイイ感じでリプライされていると思いますよ。GR-SAKURAでは、printf出力(というかSerial.writeでしたっけ?)することは出来そうですか? それから、念の為、e2 studioのバージョンも教えて下さい。

    それが出来るのであれば、koheiさんの主たる関心事(たぶんデバッグ力の向上は対象外かな)と私の好奇心を鑑みて、ひとまず以下の手はどうかなと思いました。

    koheiさん

    ・GR-SAKURAで値を出力して、その結果を投稿して頂く。(ripples関数のrepeat引数の値も。3にしとけば良いのかな?)



    ・くだんの関数をシミュレータで実行して、koheiさんの結果と突き合わせたものを投稿する。

    それで、私がそれを試すのに以下のファイルが欲しいのですが、zipファイルに固めて添付して投稿して頂けるとうれしいです。(リプライする時に Use rich formatting のところをクリックすると、ファイル添付が可能な画面モードになります。)

    欲しいファイル

    ・プロジェクトフォルダにある .cproject というファイル

Reply
  • koheiさん、こんにちは。NoMaYです。

    > 「ド素人です」とお断りしたのにww。全然ズレた返答をしたらごめんなさいw。

    ああっ、ごめんなさい、でもちゃんとイイ感じでリプライされていると思いますよ。GR-SAKURAでは、printf出力(というかSerial.writeでしたっけ?)することは出来そうですか? それから、念の為、e2 studioのバージョンも教えて下さい。

    それが出来るのであれば、koheiさんの主たる関心事(たぶんデバッグ力の向上は対象外かな)と私の好奇心を鑑みて、ひとまず以下の手はどうかなと思いました。

    koheiさん

    ・GR-SAKURAで値を出力して、その結果を投稿して頂く。(ripples関数のrepeat引数の値も。3にしとけば良いのかな?)



    ・くだんの関数をシミュレータで実行して、koheiさんの結果と突き合わせたものを投稿する。

    それで、私がそれを試すのに以下のファイルが欲しいのですが、zipファイルに固めて添付して投稿して頂けるとうれしいです。(リプライする時に Use rich formatting のところをクリックすると、ファイル添付が可能な画面モードになります。)

    欲しいファイル

    ・プロジェクトフォルダにある .cproject というファイル

Children
  • とりあえず、.cproject、サイズがそんなに大きくないので、そのまま添付しておきます。(添付の仕方が分からなかった…。これでいいのか、変な貼り付けですみません…)

    repeatは、メインループからrepeat=250で呼び出してます。(sinの位相をずらしながら何回計算するかの繰り返し回数の指定です。)

    8726.cproject.txt
    <?xml version="1.0" encoding="UTF-8" standalone="no"?>
    <?fileVersion 4.0.0?><cproject storage_type_id="org.eclipse.cdt.core.XmlProjectDescriptionStorage">
    	<storageModule moduleId="org.eclipse.cdt.core.settings">
    		<cconfiguration id="com.renesas.cdt.managedbuild.renesas.ccrx.release.configuration.1315861637">
    			<storageModule buildSystemId="org.eclipse.cdt.managedbuilder.core.configurationDataProvider" id="com.renesas.cdt.managedbuild.renesas.ccrx.release.configuration.1315861637" moduleId="org.eclipse.cdt.core.settings" name="Release">
    				<externalSettings/>
    				<extensions>
    					<extension id="org.eclipse.cdt.core.PE" point="org.eclipse.cdt.core.BinaryParser"/>
    					<extension id="org.eclipse.cdt.core.ELF" point="org.eclipse.cdt.core.BinaryParser"/>
    					<extension id="org.eclipse.cdt.core.GmakeErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
    					<extension id="com.renesas.cdt.managedbuild.renesas.core.RenesasCompilerAssemblerErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
    					<extension id="com.renesas.cdt.managedbuild.core.buildRunnerErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
    				</extensions>
    			</storageModule>
    			<storageModule moduleId="com.renesas.cdt.managedbuild.core.toolchainInfo">
    				<option id="toolchain.id" value="Renesas_RXC"/>
    				<option id="toolchain.version" value="v3.02.00"/>
    			</storageModule>
    			<storageModule moduleId="cdtBuildSystem" version="4.0.0">
    				<configuration artifactExtension="mot" artifactName="${ProjName}" buildArtefactType="org.eclipse.cdt.build.core.buildArtefactType.exe" buildProperties="org.eclipse.cdt.build.core.buildArtefactType=org.eclipse.cdt.build.core.buildArtefactType.exe,org.eclipse.cdt.build.core.buildType=org.eclipse.cdt.build.core.buildType.debug" description="Release - No Debug" id="com.renesas.cdt.managedbuild.renesas.ccrx.release.configuration.1315861637" name="Release" parent="com.renesas.cdt.managedbuild.renesas.ccrx.release.configuration">
    					<folderInfo id="com.renesas.cdt.managedbuild.renesas.ccrx.release.configuration.1315861637." name="/" resourcePath="">
    						<toolChain id="com.renesas.cdt.managedbuild.renesas.ccrx.release.toolChain.505308947" name="Renesas CCRX Toolchain" superClass="com.renesas.cdt.managedbuild.renesas.ccrx.release.toolChain">
    							<targetPlatform archList="all" binaryParser="org.eclipse.cdt.core.ELF;org.eclipse.cdt.core.PE" id="com.renesas.cdt.managedbuild.renesas.ccrx.base.targetPlatform.734026637" osList="win32" superClass="com.renesas.cdt.managedbuild.renesas.ccrx.base.targetPlatform"/>
    							<builder buildPath="${workspace_loc:/LEDCube}/Release" id="com.renesas.cdt.managedbuild.renesas.ccrx.base.builder.1673168716" keepEnvironmentInBuildfile="false" managedBuildOn="true" name="CCRX Builder" parallelBuildOn="true" parallelizationNumber="optimal" superClass="com.renesas.cdt.managedbuild.renesas.ccrx.base.builder"/>
    							<tool id="com.renesas.cdt.managedbuild.renesas.ccrx.base.dsp.126780263" name="DSP Assembler" superClass="com.renesas.cdt.managedbuild.renesas.ccrx.base.dsp">
    								<option id="com.renesas.cdt.managedbuild.renesas.ccrx.dsp.option.endian.1239988445" name="出力するデータ値のエンディアン" superClass="com.renesas.cdt.managedbuild.renesas.ccrx.dsp.option.endian" useByScannerDiscovery="false" value="com.renesas.cdt.managedbuild.renesas.ccrx.dsp.option.endian.big" valueType="enumerated"/>
    							</tool>
    							<tool id="com.renesas.cdt.managedbuild.renesas.ccrx.base.common.2001634948" name="Common" superClass="com.renesas.cdt.managedbuild.renesas.ccrx.base.common">
    								<option id="com.renesas.cdt.managedbuild.renesas.ccrx.common.option.isa.1942759623" name="命令セット・アーキテクチャ" superClass="com.renesas.cdt.managedbuild.renesas.ccrx.common.option.isa" useByScannerDiscovery="false" value="com.renesas.cdt.managedbuild.renesas.ccrx.common.option.isa.rxv1" valueType="enumerated"/>
    								<option id="com.renesas.cdt.managedbuild.renesas.ccrx.common.option.rxArchitecture.743507827" name="RX Architecture" superClass="com.renesas.cdt.managedbuild.renesas.ccrx.common.option.rxArchitecture" useByScannerDiscovery="false" value="rxv1" valueType="string"/>
    								<option id="com.renesas.cdt.managedbuild.renesas.ccrx.common.option.floatIns.868098093" name="浮動小数点演算命令を使用する" superClass="com.renesas.cdt.managedbuild.renesas.ccrx.common.option.floatIns" useByScannerDiscovery="false" value="com.renesas.cdt.managedbuild.renesas.ccrx.common.option.floatIns.yes" valueType="enumerated"/>
    								<option id="com.renesas.cdt.managedbuild.renesas.ccrx.common.option.hasFpu.1415189979" name="Has FPU" superClass="com.renesas.cdt.managedbuild.renesas.ccrx.common.option.hasFpu" useByScannerDiscovery="false" value="TRUE" valueType="string"/>
    								<option id="com.renesas.cdt.managedbuild.renesas.ccrx.common.option.deviceName.752402493" name="Device Name" superClass="com.renesas.cdt.managedbuild.renesas.ccrx.common.option.deviceName" useByScannerDiscovery="false" value="R5F56218BxFP" valueType="string"/>
    								<option id="com.renesas.cdt.managedbuild.renesas.ccrx.common.option.deviceHistory.1884691928" name="Device history" superClass="com.renesas.cdt.managedbuild.renesas.ccrx.common.option.deviceHistory" useByScannerDiscovery="false" value="non_init;R5F56218BxFP" valueType="string"/>
    								<option id="com.renesas.cdt.managedbuild.renesas.ccrx.common.option.isaHistory.2043861359" name="ISA history" superClass="com.renesas.cdt.managedbuild.renesas.ccrx.common.option.isaHistory" useByScannerDiscovery="false" value="non_init;com.renesas.cdt.managedbuild.renesas.ccrx.common.option.isa.rxv1" valueType="string"/>
    								<option id="com.renesas.cdt.managedbuild.renesas.ccrx.common.option.deviceCommand.342802759" name="Device Command" superClass="com.renesas.cdt.managedbuild.renesas.ccrx.common.option.deviceCommand" useByScannerDiscovery="false" value="R5F56218" valueType="string"/>
    								<option id="com.renesas.cdt.managedbuild.renesas.ccrx.common.option.checkRtos.589338073" name="Check RTOS" superClass="com.renesas.cdt.managedbuild.renesas.ccrx.common.option.checkRtos" useByScannerDiscovery="false" value="unusedRtos" valueType="string"/>
    								<option id="com.renesas.cdt.managedbuild.renesas.ccrx.common.option.hasDsp.444603907" name="Has DSP" superClass="com.renesas.cdt.managedbuild.renesas.ccrx.common.option.hasDsp" useByScannerDiscovery="false" value="false" valueType="string"/>
    								<option id="com.renesas.cdt.managedbuild.renesas.ccrx.common.option.deviceFamily.938063402" name="Device Family" superClass="com.renesas.cdt.managedbuild.renesas.ccrx.common.option.deviceFamily" useByScannerDiscovery="false" value="RX621" valueType="string"/>
    							</tool>
    							<tool id="com.renesas.cdt.managedbuild.renesas.ccrx.base.compiler.881558903" name="Compiler" superClass="com.renesas.cdt.managedbuild.renesas.ccrx.base.compiler">
    								<option id="com.renesas.cdt.managedbuild.renesas.ccrx.compiler.option.fpu.1831180734" name="浮動小数点演算命令を使用する" superClass="com.renesas.cdt.managedbuild.renesas.ccrx.compiler.option.fpu" useByScannerDiscovery="false" value="com.renesas.cdt.managedbuild.renesas.ccrx.compiler.option.fpu.yes" valueType="enumerated"/>
    								<option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="false" id="com.renesas.cdt.managedbuild.renesas.ccrx.compiler.option.include.734620466" name="インクルード・ファイルを検索するフォルダ" superClass="com.renesas.cdt.managedbuild.renesas.ccrx.compiler.option.include" valueType="includePath">
    									<listOptionValue builtIn="false" value="${TCINSTALL}/include"/>
    									<listOptionValue builtIn="false" value="${ProjDirPath}/generate"/>
    								</option>
    								<option id="com.renesas.cdt.managedbuild.renesas.ccrx.compiler.option.debug.1634101600" name="デバッグ情報を出力する" superClass="com.renesas.cdt.managedbuild.renesas.ccrx.compiler.option.debug" useByScannerDiscovery="false" value="false" valueType="boolean"/>
    								<option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="false" id="com.renesas.cdt.managedbuild.renesas.ccrx.compiler.option.userBefore.1366181642" name="追加するオプション(すべての指定オプションの前に追加)" superClass="com.renesas.cdt.managedbuild.renesas.ccrx.compiler.option.userBefore" useByScannerDiscovery="false" valueType="stringList">
    									<listOptionValue builtIn="false" value=""/>
    								</option>
    								<option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="false" id="com.renesas.cdt.managedbuild.renesas.ccrx.compiler.option.userAfter.1808712041" name="追加するオプション(すべての指定オプションの後ろに追加)" superClass="com.renesas.cdt.managedbuild.renesas.ccrx.compiler.option.userAfter" useByScannerDiscovery="false" valueType="stringList">
    									<listOptionValue builtIn="false" value=""/>
    								</option>
    								<option id="com.renesas.cdt.managedbuild.renesas.ccrx.compiler.option.inputCharCode.2028166327" name="プログラムの文字コード" superClass="com.renesas.cdt.managedbuild.renesas.ccrx.compiler.option.inputCharCode" useByScannerDiscovery="false" value="com.renesas.cdt.managedbuild.renesas.ccrx.compiler.option.inputCharCode.utf8" valueType="enumerated"/>
    								<option id="com.renesas.cdt.managedbuild.renesas.ccrx.compiler.option.outcode.572303613" name="出力する文字コード" superClass="com.renesas.cdt.managedbuild.renesas.ccrx.compiler.option.outcode" useByScannerDiscovery="false" value="com.renesas.cdt.managedbuild.renesas.ccrx.compiler.option.outcode.utf8" valueType="enumerated"/>
    								<option id="com.renesas.cdt.managedbuild.renesas.ccrx.compiler.option.asmPath.1813327638" name="アセンブリ・ソース・ファイルを出力する" superClass="com.renesas.cdt.managedbuild.renesas.ccrx.compiler.option.asmPath" useByScannerDiscovery="false" value="true" valueType="boolean"/>
    								<option id="com.renesas.cdt.managedbuild.renesas.ccrx.compiler.option.outputPreprocessed.1799308880" name="プリプロセッサ展開後のソース・ファイルを出力する" superClass="com.renesas.cdt.managedbuild.renesas.ccrx.compiler.option.outputPreprocessed" useByScannerDiscovery="false" value="true" valueType="boolean"/>
    								<option id="com.renesas.cdt.managedbuild.renesas.ccrx.compiler.option.listfile.353648125" name="リスト・ファイルを出力する" superClass="com.renesas.cdt.managedbuild.renesas.ccrx.compiler.option.listfile" useByScannerDiscovery="false" value="true" valueType="boolean"/>
    								<option id="com.renesas.cdt.managedbuild.renesas.ccrx.compiler.option.listfileFeatures.792493456" name="出力方法" superClass="com.renesas.cdt.managedbuild.renesas.ccrx.compiler.option.listfileFeatures" useByScannerDiscovery="false" value="com.renesas.cdt.managedbuild.renesas.ccrx.compiler.option.listfileFeatures.all" valueType="enumerated"/>
    								<option id="com.renesas.cdt.managedbuild.renesas.ccrx.compiler.option.showSource.1079210508" name="C/C++ソースを出力する" superClass="com.renesas.cdt.managedbuild.renesas.ccrx.compiler.option.showSource" useByScannerDiscovery="false" value="true" valueType="boolean"/>
    								<option id="com.renesas.cdt.managedbuild.renesas.ccrx.compiler.option.showConditionals.1773237446" name="条件アセンブルで条件が偽となる行も含めて出力する" superClass="com.renesas.cdt.managedbuild.renesas.ccrx.compiler.option.showConditionals" useByScannerDiscovery="false" value="true" valueType="boolean"/>
    								<option id="com.renesas.cdt.managedbuild.renesas.ccrx.compiler.option.showDefinitions.2112486876" name=".DEFINEで置き換える以前の情報を出力する" superClass="com.renesas.cdt.managedbuild.renesas.ccrx.compiler.option.showDefinitions" useByScannerDiscovery="false" value="true" valueType="boolean"/>
    								<option id="com.renesas.cdt.managedbuild.renesas.ccrx.compiler.option.showExpansions.782048419" name="アセンブラマクロ記述展開行を出力する" superClass="com.renesas.cdt.managedbuild.renesas.ccrx.compiler.option.showExpansions" useByScannerDiscovery="false" value="true" valueType="boolean"/>
    								<inputType id="com.renesas.cdt.managedbuild.renesas.ccrx.compiler.gcc.inputType.1560209202" name="Compiler Input C" superClass="com.renesas.cdt.managedbuild.renesas.ccrx.compiler.gcc.inputType"/>
    								<inputType id="com.renesas.cdt.managedbuild.renesas.ccrx.compiler.gpp.inputType.243433090" name="Compiler Input CPP" superClass="com.renesas.cdt.managedbuild.renesas.ccrx.compiler.gpp.inputType"/>
    							</tool>
    							<tool id="com.renesas.cdt.managedbuild.renesas.ccrx.base.assembler.1263186685" name="Assembler" superClass="com.renesas.cdt.managedbuild.renesas.ccrx.base.assembler">
    								<option id="com.renesas.cdt.managedbuild.renesas.ccrx.assembler.option.debug.2016113663" name="デバッグ情報を出力する" superClass="com.renesas.cdt.managedbuild.renesas.ccrx.assembler.option.debug" useByScannerDiscovery="false" value="false" valueType="boolean"/>
    								<option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="false" id="com.renesas.cdt.managedbuild.renesas.ccrx.assembler.option.userBefore.989937417" name="追加するオプション(すべての指定オプションの前に追加)" superClass="com.renesas.cdt.managedbuild.renesas.ccrx.assembler.option.userBefore" useByScannerDiscovery="false" valueType="stringList">
    									<listOptionValue builtIn="false" value=""/>
    								</option>
    								<option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="false" id="com.renesas.cdt.managedbuild.renesas.ccrx.assembler.option.userAfter.1238703252" name="追加するオプション(すべての指定オプションの後ろに追加)&#10;" superClass="com.renesas.cdt.managedbuild.renesas.ccrx.assembler.option.userAfter" useByScannerDiscovery="false" valueType="stringList">
    									<listOptionValue builtIn="false" value=""/>
    								</option>
    								<option id="com.renesas.cdt.managedbuild.renesas.ccrx.assembler.option.characterCode.327224015" name="プログラムの文字コード" superClass="com.renesas.cdt.managedbuild.renesas.ccrx.assembler.option.characterCode" useByScannerDiscovery="false" value="com.renesas.cdt.managedbuild.renesas.ccrx.assembler.option.characterCode.utf8" valueType="enumerated"/>
    								<option id="com.renesas.cdt.managedbuild.renesas.ccrx.assembler.option.listfile.1683240137" name="リスト・ファイルを出力する" superClass="com.renesas.cdt.managedbuild.renesas.ccrx.assembler.option.listfile" useByScannerDiscovery="false" value="true" valueType="boolean"/>
    								<option id="com.renesas.cdt.managedbuild.renesas.ccrx.assembler.option.specifyListfile.1478210560" name="リスト・ファイルの内容" superClass="com.renesas.cdt.managedbuild.renesas.ccrx.assembler.option.specifyListfile" useByScannerDiscovery="false" value="com.renesas.cdt.managedbuild.renesas.ccrx.assembler.option.specifyListfile.all" valueType="enumerated"/>
    								<option id="com.renesas.cdt.managedbuild.renesas.ccrx.assembler.option.showCondition.350924429" name="条件アセンブルで偽となった行を出力する" superClass="com.renesas.cdt.managedbuild.renesas.ccrx.assembler.option.showCondition" useByScannerDiscovery="false" value="true" valueType="boolean"/>
    								<option id="com.renesas.cdt.managedbuild.renesas.ccrx.assembler.option.showDefinitions.1407135253" name=".DEFINEで置き換える以前の情報を出力する" superClass="com.renesas.cdt.managedbuild.renesas.ccrx.assembler.option.showDefinitions" useByScannerDiscovery="false" value="true" valueType="boolean"/>
    								<option id="com.renesas.cdt.managedbuild.renesas.ccrx.assembler.option.showExpansions.273911866" name="アセンブラマクロ記述展開行を出力する&#9;" superClass="com.renesas.cdt.managedbuild.renesas.ccrx.assembler.option.showExpansions" useByScannerDiscovery="false" value="true" valueType="boolean"/>
    								<inputType id="com.renesas.cdt.managedbuild.renesas.ccrx.assembler.inputType.804647412" name="Assembler InputType" superClass="com.renesas.cdt.managedbuild.renesas.ccrx.assembler.inputType"/>
    							</tool>
    							<tool id="com.renesas.cdt.managedbuild.renesas.ccrx.base.linker.1611947179" name="Linker" superClass="com.renesas.cdt.managedbuild.renesas.ccrx.base.linker">
    								<option id="com.renesas.cdt.managedbuild.renesas.ccrx.linker.option.debug.1205453297" name="デバッグ情報を出力する" superClass="com.renesas.cdt.managedbuild.renesas.ccrx.linker.option.debug" useByScannerDiscovery="false" value="com.renesas.cdt.managedbuild.renesas.ccrx.linker.option.debug.no" valueType="enumerated"/>
    								<option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="false" id="com.renesas.cdt.managedbuild.renesas.ccrx.linker.option.rom.2026837141" name="ROMからRAMへマップするセクション" superClass="com.renesas.cdt.managedbuild.renesas.ccrx.linker.option.rom" useByScannerDiscovery="false" valueType="stringList">
    									<listOptionValue builtIn="false" value="D=R"/>
    									<listOptionValue builtIn="false" value="D_1=R_1"/>
    									<listOptionValue builtIn="false" value="D_2=R_2"/>
    								</option>
    								<option id="com.renesas.cdt.managedbuild.renesas.ccrx.linker.option.linkerSection.1747870969" name="セクション" superClass="com.renesas.cdt.managedbuild.renesas.ccrx.linker.option.linkerSection" useByScannerDiscovery="false" value="SU,SI,B_1,R_1,B_2,R_2,B,R/04,PResetPRG,C_1,C_2,C,C$*,D*,W*,L,PIntPRG,P/0FFF80000,FIXEDVECT/0FFFFFF80" valueType="string"/>
    								<option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="false" id="com.renesas.cdt.managedbuild.renesas.ccrx.linker.option.userBefore.830794015" name="追加するオプション(すべての指定オプションの前に追加)" superClass="com.renesas.cdt.managedbuild.renesas.ccrx.linker.option.userBefore" useByScannerDiscovery="false" valueType="stringList">
    									<listOptionValue builtIn="false" value=""/>
    								</option>
    								<option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="false" id="com.renesas.cdt.managedbuild.renesas.ccrx.linker.option.userAfter.734542454" name="追加するオプション(すべての指定オプションの後ろに追加)" superClass="com.renesas.cdt.managedbuild.renesas.ccrx.linker.option.userAfter" useByScannerDiscovery="false" valueType="stringList">
    									<listOptionValue builtIn="false" value=""/>
    								</option>
    								<option id="com.renesas.cdt.managedbuild.renesas.ccrx.linker.option.checkSection.848076416" name="セクションの割り付けアドレスをチェックする" superClass="com.renesas.cdt.managedbuild.renesas.ccrx.linker.option.checkSection" useByScannerDiscovery="false" value="true" valueType="boolean"/>
    								<option id="com.renesas.cdt.managedbuild.renesas.ccrx.linker.option.memoryType.761130672" name="アドレス範囲指定方法" superClass="com.renesas.cdt.managedbuild.renesas.ccrx.linker.option.memoryType" useByScannerDiscovery="false" value="com.renesas.cdt.managedbuild.renesas.ccrx.linker.option.memoryType.autoSpecify" valueType="enumerated"/>
    								<option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="false" id="com.renesas.cdt.managedbuild.renesas.ccrx.linker.option.noneLinkageOrderList.1870100520" name="(リンク順序のリスト)" superClass="com.renesas.cdt.managedbuild.renesas.ccrx.linker.option.noneLinkageOrderList" valueType="stringList">
    									<listOptionValue builtIn="false" value="&quot;.\generate\dbsct.obj&quot;"/>
    									<listOptionValue builtIn="false" value="&quot;.\generate\hwsetup.obj&quot;"/>
    									<listOptionValue builtIn="false" value="&quot;.\generate\intprg.obj&quot;"/>
    									<listOptionValue builtIn="false" value="&quot;.\generate\resetprg.obj&quot;"/>
    									<listOptionValue builtIn="false" value="&quot;.\generate\sbrk.obj&quot;"/>
    									<listOptionValue builtIn="false" value="&quot;.\generate\vecttbl.obj&quot;"/>
    									<listOptionValue builtIn="false" value="&quot;.\src\LEDCube.obj&quot;"/>
    									<listOptionValue builtIn="false" value="&quot;.\LEDCube.lib&quot;"/>
    								</option>
    							</tool>
    							<tool id="com.renesas.cdt.managedbuild.renesas.ccrx.base.librarian.1101845936" name="Library Generator" superClass="com.renesas.cdt.managedbuild.renesas.ccrx.base.librarian">
    								<option id="com.renesas.cdt.managedbuild.renesas.ccrx.librarian.option.fpu.951280425" name="浮動小数点演算命令を使用する" superClass="com.renesas.cdt.managedbuild.renesas.ccrx.librarian.option.fpu" useByScannerDiscovery="false" value="com.renesas.cdt.managedbuild.renesas.ccrx.librarian.option.fpu.yes" valueType="enumerated"/>
    								<option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="false" id="com.renesas.cdt.managedbuild.renesas.ccrx.librarian.option.userBefore.1188340518" name="追加するオプション(すべての指定オプションの前に追加)" superClass="com.renesas.cdt.managedbuild.renesas.ccrx.librarian.option.userBefore" useByScannerDiscovery="false" valueType="stringList">
    									<listOptionValue builtIn="false" value=""/>
    								</option>
    								<option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="false" id="com.renesas.cdt.managedbuild.renesas.ccrx.librarian.option.userAfter.724003180" name="追加するオプション(すべての指定オプションの後ろに追加)" superClass="com.renesas.cdt.managedbuild.renesas.ccrx.librarian.option.userAfter" useByScannerDiscovery="false" valueType="stringList">
    									<listOptionValue builtIn="false" value=""/>
    								</option>
    								<option id="com.renesas.cdt.managedbuild.renesas.ccrx.librarian.option.headMath.173975464" name="math.h(C89/C99):数値計算用ライブラリ" superClass="com.renesas.cdt.managedbuild.renesas.ccrx.librarian.option.headMath" useByScannerDiscovery="false" value="true" valueType="boolean"/>
    								<option id="com.renesas.cdt.managedbuild.renesas.ccrx.librarian.option.lang.200719040" name="C言語標準ライブラリ関数の構成" superClass="com.renesas.cdt.managedbuild.renesas.ccrx.librarian.option.lang" useByScannerDiscovery="false" value="com.renesas.cdt.managedbuild.renesas.ccrx.librarian.option.lang.c99" valueType="enumerated"/>
    								<option id="com.renesas.cdt.managedbuild.renesas.ccrx.librarian.option.headMathf.1398468535" name="mathf.h(C89/C99):数値計算用ライブラリ(float型関数)" superClass="com.renesas.cdt.managedbuild.renesas.ccrx.librarian.option.headMathf" useByScannerDiscovery="false" value="true" valueType="boolean"/>
    							</tool>
    							<tool id="com.renesas.cdt.managedbuild.renesas.ccrx.base.converter.88816712" name="Converter" superClass="com.renesas.cdt.managedbuild.renesas.ccrx.base.converter">
    								<option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="false" id="com.renesas.cdt.managedbuild.renesas.ccrx.converter.option.userBefore.910115603" name="追加するオプション(すべての指定オプションの前に追加)" superClass="com.renesas.cdt.managedbuild.renesas.ccrx.converter.option.userBefore" useByScannerDiscovery="false" valueType="stringList">
    									<listOptionValue builtIn="false" value=""/>
    								</option>
    								<option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="false" id="com.renesas.cdt.managedbuild.renesas.ccrx.converter.option.userAfter.981257079" name="追加するオプション(すべての指定オプションの後ろに追加)" superClass="com.renesas.cdt.managedbuild.renesas.ccrx.converter.option.userAfter" useByScannerDiscovery="false" valueType="stringList">
    									<listOptionValue builtIn="false" value=""/>
    								</option>
    								<option id="com.renesas.cdt.managedbuild.renesas.ccrx.converter.option.outputHexFile.659619451" name="ロード・モジュール・コンバータを実行する" superClass="com.renesas.cdt.managedbuild.renesas.ccrx.converter.option.outputHexFile" useByScannerDiscovery="false" value="true" valueType="boolean"/>
    							</tool>
    							<tool id="com.renesas.cdt.managedbuild.renesas.ccrx.base.rtosConfig.99823154" name="RTOS Configurator" superClass="com.renesas.cdt.managedbuild.renesas.ccrx.base.rtosConfig"/>
    						</toolChain>
    					</folderInfo>
    					<sourceEntries>
    						<entry flags="VALUE_WORKSPACE_PATH" kind="sourcePath" name="src"/>
    						<entry excluding="lowlvl.src|lowsrc.c" flags="VALUE_WORKSPACE_PATH" kind="sourcePath" name="generate"/>
    					</sourceEntries>
    				</configuration>
    			</storageModule>
    			<storageModule moduleId="org.eclipse.cdt.core.externalSettings"/>
    		</cconfiguration>
    	</storageModule>
    	<storageModule moduleId="cdtBuildSystem" version="4.0.0">
    		<project id="LEDCube.com.renesas.cdt.managedbuild.renesas.ccrx.projectType.1387087214" name="実行可能" projectType="com.renesas.cdt.managedbuild.renesas.ccrx.projectType"/>
    	</storageModule>
    	<storageModule moduleId="scannerConfiguration">
    		<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/>
    	</storageModule>
    	<storageModule moduleId="org.eclipse.cdt.core.LanguageSettingsProviders"/>
    	<storageModule moduleId="refreshScope"/>
    	<storageModule moduleId="org.eclipse.cdt.make.core.buildtargets"/>
    </cproject>
    

    ちょっとハードルが高いけど、もっと単純なサンプルプログラムにしてアセンブル結果を解読したら、何か分かるかしら…。あいや、math.hが展開されたところは解読できないや…。

  • RX621用にコンパイルしたripples()の逆アセンブルリストは貼れますか
  • 今日の午後は、へろへろで本業のおもちゃ修理に行ってたので、Res遅くてすみません。アンド、返信切れ切れですみません。

    lstファイル、テキストで109kBもあって結構な行数なので、多分「ripple()はここ」と思う個所を張り付けておきます。

    ripples.txt
    000008DC                         _ripples:
                                     		.STACK	_ripples=48
                                     ;     599 
                                     ;     600 void ripples(int times, int repeat)
    000008DC 6E6D                    		PUSHM R6-R13
    000008DE 60C0                    		SUB #0CH, R0
    000008E0 A081                    		MOV.L R1, 08H[R0]
    000008E2 EF21                    		MOV.L R2, R1
    000008E4 A009                    		MOV.L R1, 04H[R0]
                                     ;     601 {
                                     ;     602 	int i,j,k,z;
                                     ;     603 	float distance,ztemp;
                                     ;     604 	clearData();
    000008E6 39rrrr               W  		BSR _clearData
    000008E9 6601                    		MOV.L #00000000H, R1
    000008EB E301                    		MOV.L R1, [R0]
    000008ED FBD2rrrrrrrr            		MOV.L #_dispData, R13
    000008F3 FBC200006040            		MOV.L #40600000H, R12
    000008F9                         L237:	; bb97
                                     ;     605 
                                     ;     606 	for(k=0;k<=repeat;++k) {
    000008F9 EC01                    		MOV.L [R0], R1
    000008FB 06850101                		CMP 04H[R0].L, R1
    000008FF 2Brr                  * 		BGT L243
             38rrrr                  
    00000904                         L238:	; bb81.thread.preheader
    00000904 EC01                    		MOV.L [R0], R1
    00000906 71DB07                  		ADD #07H, R13, R11
    00000909 FC471A                  		ITOF R1, R10
    0000090C FD724AD00F4940          		FDIV #40490FD0H, R10
    00000913 6609                    		MOV.L #00000000H, R9
    00000915                         L239:	; bb81.thread
                                     ;     607 		for(i=0;i<=3;++i) {
                                     ;     608 			for(j=0;j<=3;++j) {
    00000915 FC479E                  		ITOF R9, R14
    00000918 EFC8                    		MOV.L R12, R8
    0000091A FC83E8                  		FSUB R14, R8
    0000091D FC8F88                  		FMUL R8, R8
    00000920 6607                    		MOV.L #00000000H, R7
    00000922 6676                    		MOV.L #00000007H, R6
    00000924                         L240:	; bb2
                                     ;     609 				distance=sqrt((3.5-(float)i)*(3.5-(float)i)+(3.5-(float)j)*(3.5-(float)j));
    00000924 FC477E                  		ITOF R7, R14
    00000927 EFC1                    		MOV.L R12, R1
    00000929 FC83E1                  		FSUB R14, R1
    0000092C FC8F11                  		FMUL R1, R1
    0000092F FC8B81                  		FADD R8, R1
    00000932 05rrrrrr             A  		BSR _sqrt
                                     ;     610 				ztemp=3.5+sin(distance/1.3+(float)k/3.14159)*3.5;
    00000936 FD72416666A63F          		FDIV #3FA66666H, R1
    0000093D FC8BA1                  		FADD R10, R1
    00000940 05rrrrrr             A  		BSR _sin
    00000944 FD723100006040          		FMUL #40600000H, R1
    0000094B FD722100006040          		FADD #40600000H, R1
                                     ;     611 				z=(int)(ztemp+0.5);
    00000952 FD72210000003F          		FADD #3F000000H, R1
    00000959 FC971E                  		FTOI R1, R14
                                     ;     612 
                                     ;     613 //				distance=sqrt((3.5-i)*(3.5-i)+(3.5-j)*(3.5-j));
                                     ;     614 //				ztemp=3.5+sin(distance/1.3+k/3.14159)*3.5;
                                     ;     615 //				z=(int)(ztemp+0.5);
                                     ;     616 				dispData[z][i] |= 1<<j;
    0000095C 6C3E                    		SHLL #03H, R14
    0000095E FF2FE9                  		ADD R14, R9, R15
    00000961 FECFD5                  		MOVU.B [R15,R13], R5
    00000964 FC6357                  		BSET R7, R5
    00000967 FE0FD5                  		MOV.B R5, [R15,R13]
                                     ;     617 				dispData[z][7-i] |= 1<<j;
    0000096A FECBE5                  		MOVU.B [R11,R14], R5
    0000096D FC6357                  		BSET R7, R5
    00000970 FE0BE5                  		MOV.B R5, [R11,R14]
                                     ;     618 				dispData[z][i] |= 1<<(7-j);
    00000973 FECFD5                  		MOVU.B [R15,R13], R5
    00000976 6217                    		ADD #01H, R7
    00000978 FC6356                  		BSET R6, R5
    0000097B FE0FD5                  		MOV.B R5, [R15,R13]
                                     ;     619 				dispData[z][7-i] |= 1<<(7-j);
    0000097E FECBEF                  		MOVU.B [R11,R14], R15
    00000981 FC63F6                  		BSET R6, R15
    00000984 FE0BEF                  		MOV.B R15, [R11,R14]
    00000987 6016                    		SUB #01H, R6
    00000989 6147                    		CMP #04H, R7
    0000098B 21rr                    		BNE L240
    0000098D                         L241:	; bb85
    0000098D 6219                    		ADD #01H, R9
    0000098F 601B                    		SUB #01H, R11
    00000991 6149                    		CMP #04H, R9
    00000993 21rr                    		BNE L239
    00000995                         L242:	; bb93
                                     ;     620 			}
                                     ;     621 		}
                                     ;     622 		LEDDisp(times);
    00000995 A881                    		MOV.L 08H[R0], R1
    00000997 39rrrr               W  		BSR _LEDDisp
                                     ;     623 		clearData();
    0000099A 39rrrr               W  		BSR _clearData
    0000099D EC01                    		MOV.L [R0], R1
    0000099F 6211                    		ADD #01H, R1
    000009A1 E301                    		MOV.L R1, [R0]
    000009A3 38rrrr               W  		BRA L237
    000009A6                         L243:	; return
                                     ;     624 	}
                                     ;     625 }

    自分で解読するべきなのですが、ちょっと根性と知識が足りません…w。とりあえず貼らせて頂きます。