movem ISA was wrong regarding movem.w <ea>,<registerlist> (sign extends registers).

Changed Register Flow Documentation wording from 'reads' to 'uses' and from 'modifies' to 'changes'.
Updated screenshot. Added another test case for M68kRegisterFlowDocumentationProviderTest.
This commit is contained in:
2021-08-03 10:57:53 +02:00
parent 954f42bf63
commit eb26793a20
7 changed files with 111 additions and 28 deletions
@@ -11,7 +11,7 @@ import org.junit.jupiter.api.extension.ExtendWith
internal class M68kRegisterFlowDocumentationProviderTest : AbstractDocumentationProviderTest() {
@Test
internal fun check_documentation_for_a_register_in_code_flow(@MyFixture myFixture: CodeInsightTestFixture) {
internal fun check_documentation_for_a_read_register_in_code_flow(@MyFixture myFixture: CodeInsightTestFixture) {
myFixture.configureByText(
"documentme.asm", """
label
@@ -34,7 +34,7 @@ nextlabel
assertThat(generateDocumentation(myFixture))
.isEqualToIgnoringWhitespace(
"""
<div class="definition">move instruction reads d0.w</div>
<div class="definition">move instruction uses d0.w</div>
<table class="sections" style="padding-left: 8pt; padding-right: 8pt">
<tr>
<td valign="top">        </td>
@@ -44,7 +44,7 @@ nextlabel
<tr>
<td valign="top">        </td>
<td valign="top"><code>add.w #1,<font color="#ffc800">d0</font></code></td>
<td valign="top"> ; modifies d0.w</td>
<td valign="top"> ; changes d0.w</td>
</tr>
<tr>
<td valign="top">&nbsp;</td>
@@ -56,7 +56,7 @@ nextlabel
<tr>
<td valign="top">        </td>
<td valign="top"><code>move.w <font color="#ffc800">d0</font>,d1</code></td>
<td valign="top"> ; reads d0.w</td>
<td valign="top"> ; uses d0.w</td>
</tr>
<tr>
<td valign="top">        </td>
@@ -66,7 +66,7 @@ nextlabel
<tr>
<td valign="top">        </td>
<td valign="top"><code>addq.b #1,<font color="#ffc800">d0</font></code></td>
<td valign="top"> ; modifies d0.b</td>
<td valign="top"> ; changes d0.b</td>
</tr>
<tr>
<td valign="top">--&gt;</td>
@@ -76,7 +76,7 @@ nextlabel
<tr>
<td valign="top">        </td>
<td valign="top"><code>move.l <font color="#ffc800">d0</font>,d2</code></td>
<td valign="top"> ; reads d0.l</td>
<td valign="top"> ; uses d0.l</td>
</tr>
<tr>
<td valign="top">&nbsp;</td>
@@ -96,7 +96,88 @@ nextlabel
<td valign="top"> ; <font color="#00ff00">sets d0.l</font></td>
</tr>
</table>
""".trimIndent()
"""
)
}
@Test
internal fun check_documentation_for_a_written_register_in_code_flow(@MyFixture myFixture: CodeInsightTestFixture) {
myFixture.configureByText(
"documentme.asm", """
label
moveq.l #0,d0
add.w #1,d0
move.l d1,-(sp)
move.w d0,d1
move.b d2,d0
addq.b #1,d0
move.w d0,d<caret>1
move.l d0,d2
move.w d1,d2
clr.b d0
moveq.l #0,d0
move.l (sp)+,d1
rts
nextlabel
"""
)
assertThat(generateDocumentation(myFixture))
.isEqualToIgnoringWhitespace(
"""
<div class="definition">move instruction sets d1.w</div>
<table class="sections" style="padding-left: 8pt; padding-right: 8pt">
<tr>
<td colspan="3" valign="top"><b>label</b></td>
</tr>
<tr>
<td valign="top">        </td>
<td valign="top"><code>move.l <font color="#ffc800">d1</font>,-(sp)</code></td>
<td valign="top"> ; uses d1.l</td>
</tr>
<tr>
<td valign="top">        </td>
<td valign="top"><code>move.w d0,<font color="#ffc800">d1</font></code></td>
<td valign="top"> ; sets d1.w</td>
</tr>
<tr>
<td valign="top">&nbsp;</td>
<td valign="top">
<div class="grayed">[...]</div>
</td>
<td valign="top">&nbsp;</td>
</tr>
<tr>
<td valign="top">--&gt;</td>
<td valign="top"><b><code>move.w d0,<font color="#ffc800">d1</font></code></b></td>
<td valign="top"> ; &lt;--</td>
</tr>
<tr>
<td valign="top">&nbsp;</td>
<td valign="top">
<div class="grayed">[...]</div>
</td>
<td valign="top">&nbsp;</td>
</tr>
<tr>
<td valign="top">        </td>
<td valign="top"><code>move.w <font color="#ffc800">d1</font>,d2</code></td>
<td valign="top"> ; uses d1.w</td>
</tr>
<tr>
<td valign="top">&nbsp;</td>
<td valign="top">
<div class="grayed">[...]</div>
</td>
<td valign="top">&nbsp;</td>
</tr>
<tr>
<td valign="top">        </td>
<td valign="top"><code>move.l (sp)+,<font color="#ffc800">d1</font></code></td>
<td valign="top"> ; <font color="#00ff00">sets d1.l</font></td>
</tr>
</table>
"""
)
}
}