問題タブ [sparc]
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.
compression - 組み込みシステム コア ダンプ用の .bss および .data の 8/16/32/64 ビット アライン ロスレス圧縮
次のタスクのために、高速/ロスレス/固定間隔の圧縮アルゴリズムを探しています。
私は組み込みシステムを持っています。メモリ/フラッシュ リソースが不足しています。
そのためのコア ダンプを生成し、結果をフラッシュに保存したり、低速のシリアル ライン経由で吸い出したりしたいと考えています。
基本的に必要なのは、ヒープ、スタック、.data、および .bss セグメントと、いくつかのメモリ マップ レジスタだけです。
デバイスは Leon Sparc Softcore です。
さて、このデータは、それを示すいくつかの奇妙な点として
- 通常の LZW / Zlib / ... 圧縮ライブラリではうまくいきません。(自然言語コーパスではありません)。
- Sparc はアラインメントに執着しています。すなわち。.bss および .data セグメント内のすべての項目が、(事実上) 8、16、32、64 ビットのアドレス境界に対応して配置された 8、16、32、または 64 ビットの int であることを保証できます。
- 圧縮コード用に小さな固定スペースを予約する必要があります。
- これは 32 ビット マシンで、bss とデータ セグメントのサイズは 4 GB よりもはるかに小さいです。
- システム内のほとんどの 32 ビット値はシンボルのアドレスです。すなわち。4 ギガの可能な値の非常に小さなサブセット。
私の現在の計画は... .bss / .data セグメント全体をスキャンし、16 ビット値の完全なヒストグラムを計算します。
これから、完全なハフマン エンコーディングを取得できます。しかし、32 ビット / 64 ビット値の内部構造を熟考することで、もっとうまくやれると思います。(例: ビットの最上位半分の変動性は、最下位ビットの変動性よりもはるかに小さい。)
そして、ポインタ/提案/既存の仕事?
solaris - マウント: 許可が拒否されました
私はsolaris sparc 5.11のようにsolaris sparc 5.10ディレクトリをマウントしようとしています
root> mount S5.10Machine:/mydir /mydir
そして私は得ています
nfs マウント S5.10Machine:/mydir 許可が拒否されました。
S5.10Machine:/mydir に 777 パーミッションを与えました
assembly - 生成された sparc アセンブリ コードのセグメントを検査用にマーキングする
Sun Studio コンパイラを使用して、最適化をひどく台無しにすることなく、認識可能なコード シーケンスを挿入する方法を知っている人はいますか?
Sun Studio (12.1) コンパイラがいくつかのインスタンスでコードの一部をどのように処理するかを確認したいと考えており、生成されたコードを認識可能な一連の no-op 命令でマークする方法を探していたので、私のコードの断片を見つけることができました。私の最初の試みは次を使用しました:
ただし、これを使用すると、コンパイラは最適化されていないコードを nop ブロック内に生成します。例:
問題のコードは、2 つの店舗だけです。sparc アセンブリについてはよくわかりませんが、これはコンパイラが nop ブロック内のコードの最適化を完全にあきらめたようです。ldx [%sp + 0x8c7], %o4
たとえば、ストアのベース アドレスを ですでに再計算しているのに、新しいロード を生成するのはなぜでしょう%02
か。
周囲のコードを一目見ただけで、使用されている asm volatile の近くのどこでも最適化されていない可能性があります。
代わりに次のことを試し、このインライン asm で .il ファイルを作成しました。
私のソースで次のように:
これを使用すると、逆の問題が発生します。コンパイラは賢すぎて、nop 命令を完全に排除します (ブロック内の命令の副作用を見て、.inline
後で、正しくこれを決定すると推測しています)。何もせず、そのコードを投げ捨てます)。
より良い方法はありますか?
assembly - コードは 1 に書き込みますが、stdout には書き込みませんか?
sparc32 で簡単なアセンブラ コードを実行しようとしていますが、標準出力に書き込めません。問題は ta 0x00 または ta 0x08 のいずれかで発生します。
これはリンカ関連の問題でしょうか? トラス出力に書き込みが見られるようです。
dis 出力: http://sprunge.us/hMXV
c - CからSPARCへのChar配列の変換
以下に示すCソースコードステートメントについて考えてみます。
以下のSPARCアセンブリ言語コードセグメントを完成させて、アセンブリ言語ステートメントのシーケンスが上記のCステートメントと同等になるようにします。
smul%i1、40、%l1行が何をしているのか疑問に思いました。なぜ40倍になっているのかわかりません。誰かが説明できればそれは素晴らしいことです。ありがとう。
assembly - データを特定のビットに配置する
私は SPARC を学び、サイズ 4,000 バイトの配列を作成しようとしています。この配列内で、その配列の正しい位置に値を配置するためのオフセットを計算する必要があります。配列のサイズを設定する方法は知っていると思いますが(.skipを使用するだけですか?)、オフセットを計算する方法も知っていますが、値を正しいバイトに配置する方法を誰か教えてもらえますか? みんな、ありがとう。編集:私はもともとビットと言いましたが、バイトと言う意味でした。
c - scanf() を使用して文字を読み取る SPARC
ここに私の問題があります。scanf() を使用してユーザー入力から文字を取得し、それを SPARC Assembly でユーザーに出力しようとしています。このコードは、私が実際にやろうとしていることよりも単純ですが、それは私が夢中になっていることです. 文字列では問題なく機能しますが、何らかの理由で文字では機能しません。
SPARC コード:
C コード:
c - Makefileの問題-リーダーの致命的なエラー
学校のプロジェクト用に作成しているmakefileに問題があります。CファイルとSPARCアセンブリファイルを(それぞれ)コンパイルしてアセンブルし、それらをリンクしています。私はUnix環境で働いています。これがmakefileです:
ただし、作成しようとすると、リーダーエラーが発生します。具体的には次のとおりです。
「リーダーの致命的なエラー:proj09.makefile、2行目:予期しない行末が表示されました」
これは通常、何かが正しくフォーマットされていないことを意味することがわかりましたが、この場合はどうなるかわかりません。また、これがmakefileの正しいコードであるかどうかは100%わかりません(具体的には、support.sファイルのアセンブルと両方のファイルのリンク)。これが繰り返しの質問である場合はお詫び申し上げます。事前にアーカイブを調べましたが、何も役に立ちませんでした。どんな助けでも大歓迎です!
編集:なぜこれが違いを生むのかわかりませんが、geditを使用して実際にコードを記述し、リンクのためにファイルをSSHに転送しています。
tcl - Solaris sparc に tcl をインストールする方法
私は、solaris マシン構成を持っています: SunOS indevel07 5.10 Generic_147440-15 sun4v sparc sun4v
. これにインストールしようとしexpect utility
ています。ユーティリティを期待するには、tcl をインストールする必要があります。私もそれをインストールしようとしましたが、エラーが発生しています。sunfreewareからtcl-8.5.12-sol10-sparc-local.gzとexpect-5.45-sol10-sparc-local.gzをダウンロードしました。それらを解凍して、のようにインストールしようとしましたpkgadd -d pkgname
。次のようなエラーが表示されます。
このようなエラーがたくさんあります。グーグルでトラブルシューティングを試みましたが、何も見つかりませんでした。このため、私は自分の開発に行き詰まっています。
memory - アセンブリにスペースを割り当てる(挿入機能)
私は挿入関数に相当するアセンブリに取り組んでおり、リストの要素をどのように正確に配置して、そこにデータを収めることができるか疑問に思っていました。情報を挿入する正しいアドレスを見つけましたが、そこにあるものを上書きせずにデータを書き込む方法について少し混乱しています。私の考えは
ここで、48 は要素のサイズです。これにより、無効なアライメント境界というエラーが表示されます。何か案は?