問題タブ [easy68k]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
assembly - アセンブリ - ユーザーが入力した文字列を 16 進数に変換する
ユーザーにメモリ アドレスの入力を求めるアセンブリ プログラム (Easy68K) に取り組んでいます。次に、プログラムはこれらの ASCII 文字をそれぞれ 16 進数に変換します。16進数は問題なく変換できますが、問題が発生しています。
ユーザーが A234567F を入力すると、これは (A1 に) 8 バイトとして格納されますが、有効なメモリ アドレスの 16 進数は 4 バイト (2 ワード、1 ロングワード) しかありません。各文字を反復処理して、16 進数に変換できますが、問題ありません。しかし、いわばそれらを「連結」する方法がわかりません。
「A」用に別のバイトのストレージと「2」用に別のバイトのストレージを用意したくありません。「A2」を同じバイトのストレージに格納したい。
したがって、この例では、ストレージが次のようになることを望みます。
メモリアドレス$00000000
は値を保持する必要があります$A2
。
$00000001
ホールド$34
$00000002
ホールド$56
$00000003
ホールド$7F
MOVE.L
次に、アドレス$00000000
から D1 への開始を行うと、 D1 には値が含まれます$A234567F
。
これどうやってするの?
assembly - 68k - 命令を並べ替えてクロックサイクルを削減するためのショートカット?
命令の順序を変更すると、クロック サイクルを節約し、データ ハザードを回避できることを学びました。
ただし、これらの命令を並べ替える方法を正確に理解するのは難しいと思います。私がこれまでに見つけた最善の方法は、それらを表にまとめ、具体的な手順を書き出して比較することですが、これには多くの時間がかかります。
質問: 表に記載しなくても、コードの改善をすぐに見つけるのに役立つショートカットやヒント/トリックはありますか?
assembly - アセンブリ 68k - CMP が期待どおりに機能しない
特定の配列のゼロの数を計算しようとしています
しかし、2 番目の CMP D0、D1 は、BGT UPDATEF をアクティブにして、より大きなカウンターの値を保存しません。