<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[RISC-V, float-Konstante in Register laden]]></title><description><![CDATA[<p>Hallo, vielleicht hat jemand von euch eine Idee, warum das im Folgendem angegebene Programm nicht funktionieren könnte, und wie es stattdessen möglich wäre...</p>
<pre><code>.data
.float 1.5
.text
main:
    fmv.d.x f16, zero
    fld f17, (.data)
    jal ra, my_sum
    j stop
</code></pre>
<p>Fehlermeldung: <code>AssemblerError: start1.s:6: Register f17 is not an integer register</code></p>
<p>Nun ja, <code>f17</code> ist ein float-Register und darin möchte in den konstanten Wert <code>1.5</code> laden.</p>
<p>Ich nutze einen RISC-V Simulator: Venus für VS Code. Soweit ich weiß, ist RISC-V open source und eindeutig durchspezifiziert, ich kann mir gar nicht vorstellen, dass es dafür keine Lösung gäbe...</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/352404/risc-v-float-konstante-in-register-laden</link><generator>RSS for Node</generator><lastBuildDate>Wed, 14 Oct 2026 10:51:51 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/352404.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 13 May 2021 05:33:13 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to RISC-V, float-Konstante in Register laden on Thu, 13 May 2021 05:33:13 GMT]]></title><description><![CDATA[<p>Hallo, vielleicht hat jemand von euch eine Idee, warum das im Folgendem angegebene Programm nicht funktionieren könnte, und wie es stattdessen möglich wäre...</p>
<pre><code>.data
.float 1.5
.text
main:
    fmv.d.x f16, zero
    fld f17, (.data)
    jal ra, my_sum
    j stop
</code></pre>
<p>Fehlermeldung: <code>AssemblerError: start1.s:6: Register f17 is not an integer register</code></p>
<p>Nun ja, <code>f17</code> ist ein float-Register und darin möchte in den konstanten Wert <code>1.5</code> laden.</p>
<p>Ich nutze einen RISC-V Simulator: Venus für VS Code. Soweit ich weiß, ist RISC-V open source und eindeutig durchspezifiziert, ich kann mir gar nicht vorstellen, dass es dafür keine Lösung gäbe...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2602360</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2602360</guid><dc:creator><![CDATA[EinNutzer0]]></dc:creator><pubDate>Thu, 13 May 2021 05:33:13 GMT</pubDate></item><item><title><![CDATA[Reply to RISC-V, float-Konstante in Register laden on Thu, 13 May 2021 08:20:39 GMT]]></title><description><![CDATA[<p>Noch eine Idee:</p>
<pre><code>    addi        a0, zero, 1
    addi        a1, zero, 5
    addi        a2, zero, 1
    addi        a3, zero, 10
    fcvt.d.w    f16, a0
    fcvt.d.w    f17, a1
    fcvt.d.w    f18, a2
    fcvt.d.w    f19, a3
    start1:
    flt.s       a3, f17, f18
    beq         a2, a3, stop1
    fdiv.s      f17, f17, f19
    # fmv.s
    j           start1
    stop1:
    fadd.d      f16, f16, f17
</code></pre>
<p>Ich könnte 5 und 10 in ein int-Register laden (intermediate). Dann move ich beide/alles in float-Registers. Anschließend rechne ich 5.0 geteilt durch 10.0. 0.5 addiere ich dann zu 1.0 und erhalte somit 1.5. Zumindest in der Theorie.</p>
<p>Problem: Nach der Zeile <code>fdiv.s f17, f17, f19</code> steht in f17 immer der Wert NaN... Warum?</p>
<p><code>fdiv.d</code> kennt er nicht, weil die int-Registers wohl 64-bit sind, die float-Registers wohl jedoch 32-bit.</p>
<p>Hier <code>https://five-embeddev.com/riscv-isa-manual/latest/f.html#sec:single-float-compute</code> steht auch noch:<br />
<code>FMADD.S multiplies the values in rs1 and rs2, adds the value in rs3,</code><br />
etwas von <code>rs3</code> - was ist das? <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f605.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_sweat"
      title=":grinning_face_with_sweat:"
      alt="😅"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2602365</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2602365</guid><dc:creator><![CDATA[EinNutzer0]]></dc:creator><pubDate>Thu, 13 May 2021 08:20:39 GMT</pubDate></item><item><title><![CDATA[Reply to RISC-V, float-Konstante in Register laden on Thu, 20 May 2021 16:10:01 GMT]]></title><description><![CDATA[<p><em>püschel</em></p>
<p>Bitte sagt mir, was falsch ist. Ich bin mit meinem Latein am Ende. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f62d.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--loudly_crying_face"
      title=":loudly_crying_face:"
      alt="😭"
    /></p>
<p>Laut Debugger (der ist bei der VS Code-Erweiterung übrigens auch dabei) sieht alles gut aus, bis auf diese Zeile:<br />
<code>fdiv.s f17, f17, f19</code>.</p>
<p>Danke für <em>jeden</em> Input.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2602593</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2602593</guid><dc:creator><![CDATA[EinNutzer0]]></dc:creator><pubDate>Thu, 20 May 2021 16:10:01 GMT</pubDate></item></channel></rss>