問題タブ [nios]
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 - アセンブラ命令bneおよびbr(NIOS II)。それらのオフセットはどのように計算されますか?
私はこのアセンブラコードを持っています。これをバイナリ形式のマシンコードに変換することになっています。
「bner16、r0、loop」と「brstop」がどのように解釈されるのかわかりません。
私の命令セットリファレンスは、bne命令がこれを行うと言っています:
これは、私が理解しているように、プログラムカウンターが4+オフセットまたは単に4だけインクリメントされていることです。
しかし、私の場合、offset / IMM16値は何ですか?命令セットリファレンスには次のように書かれています。
「命令エンコーディングでは、IMM16によって与えられるオフセットは、bneの直後の命令を基準にした符号付きバイト数として扱われます」。
私の解釈では、IMM16値は次の命令アドレスまでの「距離」ですが、これが正しいかどうかはわかりません。bneの16進アドレスは0x40010、brの16進アドレスは0x40014であるため、これはIMM16値が4であることを意味しますか?(これにより、rA!= rBの場合、PCが0x40014アドレスを飛び越えてしまいますか?)
verilog - Verilog および Altera DE2 ボードの VGA を使用して数値を出力する方法は?
私は Altera DE2 FPGA ボードと verilog を使用しており、これらを使用して簡単な CPU を設計しています。ボードの VGA 出力を使用してレジスタの値を出力する必要があります。
これについてどうすればよいですか?
assembly - MIPSをマシンコードに変換する
上記をマシンコードに変換するにはどうすればよいですか?実際のコード以外に、翻訳の仕方を知る必要があります。命令のオペコードを取得できると思いますが、moviは疑似命令であり、どこで取得できるかわかりません。Nios IIのマニュアルで読む必要がありますか?
アップデート
最初の4つの命令は即時型であるため、フィールド形式を使用する必要があります。moviとsubiはどちらもaddiに実装された疑似命令であるため、addiのオペコードが使用されます。私は助けられました、そして私は指示movi r16, val
がに翻訳されることを知っています
00000100000100011100010010000100
したがって、オペコードは000100バイナリであり、16進数で0x04であり、マニュアルにもaddiのオペコードであると記載されています。したがって、最初の4つのオペコードがあると思います。それらはすべて000100です。
アップデート2
私は今、ほとんどの命令のオペコードと直接のフィールドを知っていると思います:
シーケンス0100011100010010は0x4712であり、これはval
で宣言された変数です。.equ,
したがって、最初の4つのオペコードはすべてaddiであり、addiは0x04であると言うため、000100である必要があります。レジスタの2つの5ビットフィールドを変換する方法は今はわかりませんが、マニュアルで確認できます。' has opcode 0x06 so it should say 000110 in the opcode for br.
brbne`にはopkod0x1Eがあり、バイナリは011110 = 30(?)
これは正しい始まりですか?
assembly - addiとsubiの「関係」とは?
私はこの質問に答えることになっています。いくつかの調査の結果、 add と sub は同じオペコードを持ち、機能分野のみが異なると言われています。これは答えですか、それとも何か他のものですか?
アップデート
これは、Nios II CPU マニュアルで入手できます。
assembly - このアセンブリプログラムを書く
アセンブリ サブルーチンの非常に正確な仕様があります。
仕様
名前: サブルーチンは、hexsc と呼ばれる必要があります。入力パラメータ: レジスタ r4 に 1 つだけ。レジスタ r4 の最下位 4 ビットは、0 から 15 までの数値を指定します。入力の他のすべてのビットの値は無視する必要があります。戻り値: 1 つだけ、レジスタ r2 に返されます。レジスタ r2 の最下位 7 ビットは、以下で説明するように ASCII コードでなければなりません。出力の他のすべてのビットはゼロでなければなりません。必要な処置: 入力値 0 から 9 は、それぞれ数字 '0' から '9' の ASCII コードに変換する必要があります。入力値 10 ~ 15 は、それぞれ文字「A」~「F」の ASCII コードに変換する必要があります。副作用: レジスタ r2 から r15 の値が変更される場合があります。サブルーチンが戻るとき、他のすべてのレジスターの値は変更されていない必要があります。
サブルーチンの作り方は知っているかもしれませんが、それまでやったことがありません。レジスタから最下位 4 ビットを指定する方法がわかりません。値を返す方法がわかりません。私はアセンブリ プログラミングを始めたばかりで、プログラムを実行することはできますが、実際にはプログラムを作成することはできません。役立つヒントを教えていただけますか?プロセッサーのマニュアルはこちらから入手できます。
私が提案できる最善の方法は、インターネットからこのコードの一部を借りたので、私が理解できないすべてです.
コードにコメントしましたが、サブルーチンではなく、変換アルゴリズムが正しく実装されているかどうかわからないため、仕様に従っていないと思います。
assembly - 4ビットの16進数から7ビットのASCIIに変換するにはどうすればよいですか?
割り当ては、4ビットの16進数と7ビットのASCIIの間で変換できるサブルーチンを作成することにより、アセンブリプログラミングを学習することです。最初はわからなかったのですが、調べてみたらフローチャートを描いてプログラムを作ることができましたが、完全に正しいわけではないので、これを解決するためのご指導をお願いします。
実際の割り当てテキストは次のとおりです。
HA3.1。4ビットの16進値を対応する7ビットのASCIIコードに変換するためのサブルーチンのフローチャートを作成します。以下のhexascの完全な仕様を参照してください。例:2進数0010(16進数2)は011 0010( '2'のASCIIコード)に変換されます。別の例:バイナリ1011(16進数のB)は100 0010('B'のASCIIコード)に変換されます。サブルーチンが要件に従って文書化されていることを確認してください。
HA3.2。Nios II IDEのラボワークプロジェクトを使用して、hexasc.sという名前の新しいファイルを作成します。
HA3.3。ファイルhexasc.sに、4ビットの16進値を対応する7ビットのASCIIコードに変換するhexascというサブルーチンを記述します。
プログラムのフローチャートを作成しました。
そして、私が試したプログラムはこれですが、仕様に準拠していないと思われます。
この課題の作成と解決を手伝ってもらえますか?十分な時間があります、それは一ヶ月以内に期限がありません。
アップデート
フローチャートが正しくないことをコメントで確認した後、必要な調整を行いました。
また、16進数とASCIIの間で変換するこのアルゴリズムがどのように正しいかについても説明したいと思います。
更新/編集
これが完全なプログラムです。
assembly - このサブルーチンを呼び出す方法は?
私は NIOS II IDE で MIPS 32 ビット アセンブリを学んでおり、r4 と r5 に保存されている 2 つの数値を乗算し、結果を r2 に返す完全に機能するサブルーチンを取得しています。
サブルーチンを呼び出して、そこから何かを出力して、期待どおりに動作していることを確認するにはどうすればよいですか? これは私の最初のサブルーチンであり、以前にサブルーチンを呼び出したことがないので、すぐにすべてを理解できない場合はご容赦ください。
c - &、&&および|の分析 このコードのために?
このコードとの違いを説明したい
コードでは、&はビットを「マスク」するために&&
使用されており、代わりに使用された場合、結果は完全に異なります。その場合、式は、ビットの1つを保持するために使用される1ビット位置ではなく1
、真理値()として解釈されていました。TRUE
正しい?しかし、私がこのようにした場合、代わりに何が起こるでしょうか:
最初のケースで1
は、はLSB(最下位ビット)のみ、つまり右端のビットのみを保持するために使用されます。その代わりに何を|
しますか?この変更を行った場合の違いは何ですか?
assembly - Difference between load word and move?
What is the difference between
ldw r8,0(r4)
and
mov r8, r4
Load word says "copy from memory" but when load word copies from r4, it is copying from register and not from memory right?
c - NIOS II にイメージをロードするにはどうすればよいですか?
現在、Quartus II 12.0 で NIOS II を使用していますが、いくつかの問題に直面しています。
画像を書き留めたり、ピクセルを読み取ったり、可能であれば画像を読み取ったりできるライブラリがあれば、Nios II で画像を操作する方法を知りたいです。
画像の読み込み方法がわからないのに、画像で使用できるグラフィックライブラリを知っている場合でも、教えてください。
ありがとう、ギアキ。