問題タブ [gnu]
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.
linux - Linux でシンボルを固定アドレスにリンクする
Linux(x86)でバイナリを通常どおり実行できるように、GNU ldを使用して(一部の)シンボルを特定の固定アドレスにリンクするにはどうすればよいですか?これらのシンボルへのアクセスはありませんが、アドレスは重要です。
たとえば、次の構造があります。
foobar
アドレス 0x76543210にリンクしたいのですが、標準ライブラリと残りのアプリケーションは通常どおりリンクします。アプリケーションは foobar のアドレスを使用しますが、その背後にある (存在しない可能性がある) メモリを参照しません。
この要求の論理的根拠は、この同じソースを 2 つのプラットフォームで使用できるということです。ネイティブ プラットフォームでRegister32
は、単に avolatile uint32_t
にすることができますが、Linux では、 eg を定義Register32
する a と同じサイズの C++ オブジェクトであり、アドレスを使用します。オブジェクトのアドレス (およびデータ) を使用して通信フレームワークに要求を送信し、リモート ハードウェアで実際のアクセスを実行します。したがって、リンカーは、構造体のフィールドが正しい「アドレス」を参照するようにします。uint32_t
operator=
Register32
null - GNU Screen を透過的に使用するにはどうすればよいですか
ユーザーがそこにあることを知らないような方法で GNU screen を使用したい。これは、私が書いているテキスト ベースの管理アプリケーションを一度に 1 人のユーザーだけが使用できるようにするためのものです。ユーザーがアプリケーションを実行して他のすべての人をロックアウトし、休暇中も実行したままにするのを防ぐために、セッションを切り離して、別のユーザーがそれにアタッチできるようにしたいと考えています。
だから私の質問は:
- .screenrc のエスケープ キーを null に設定して、ユーザーが画面の機能自体にアクセスできないようにすることはできますか?
gnu - GNU Screen の「[remote detached]」メッセージを変更するにはどうすればよいですか
screen セッションをリモートで切り離し、自分で接続すると (screen -r -d)、切り離されたセッションで次のように表示されます。
[remote detached]
このメッセージを変更することはできますか?
windows - Windows で差分パッチを適用するにはどうすればよいですか?
diff パッチを作成できるプログラムはたくさんありますが、私は diff パッチを適用するのにかなりの時間を費やしています。パッチを配布しようとしていますが、その適用方法についてユーザーから質問を受けました。そこで私は自分でそれを理解しようとしましたが、手がかりがなく、見つけることができるツールのほとんどがコマンドラインであることがわかりました。(私はコマンド ラインを扱うことができますが、使いやすい GUI がなければ、多くの人が道に迷ってしまうでしょう。そのため、この目的には適していません。)
TortoiseSVN を使ってみました。適用したいパッチがあります。パッチを右クリックすると、TortoiseSVN サブメニューの下に「パッチを適用」というオプションがあります。空のウィンドウを引き上げるだけです。
ということでOpenを押してみました。マージと統合差分の適用の 2 つのオプションがあります。(幸いなことに、パッチは統一された diff 形式です。) しかし、apply オプションは単に機能しません。パッチとフォルダーを要求します。どういうわけか、パッチを適用するファイルを要求するのを忘れていました! したがって、TortoiseSVN は単純に機能しません。パッチとファイルを取得して適切に適用する Windows GUI ベースのユーティリティはありますか?
編集: これまでの返信を見ると、既にバージョン管理されているファイルの場合にのみ、Tortoise が正しく実行するようです。ここではそうではありません。SVN リポジトリ以外のファイルにパッチを適用できるようにする必要があります。Tortoise を使ってみたのは、SVN が diff を使用し、それらを作成して適用する方法を知っている必要があることをたまたま知っているからです。
assembly - 誰かがこの直接組み立てられたx86JMPオペコードを説明できますか?
学校では、ブートストラッププログラムを使用して、オペレーティングシステムなしでスタンドアロンプログラムを実行しています。私はこのプログラムを研究してきましたが、プロテクトモードを有効にすると、プログラム内でオペコードとオペランドをデータとして直接アセンブルすることで、はるかに大きなジャンプが実行されます。これはGNUアセンブラ用でした:
まず第一に、なぜ(命令ニーモニックの代わりに)これを実行したいのでしょうか?
私はIntelのマニュアルを見てきましたが、それでもコードに少し混乱しています。具体的には、ボリューム2A、3-549ページに、オペコードの表があります。関連するエントリ:
実際のオペコードは明らかですが、最初のバイトである0x66は私を混乱させます。Intelマニュアルの表を参照すると、cpは明らかに6バイトのオペランドが続くことを意味します。そして明らかに次の2行に6バイトが続きます。0x66は、「オペランドサイズのオーバーライドプレフィックス」をエンコードします。これはテーブルのcpと何の関係がありますか?cpには16進値があると思っていましたが、代わりにこのオーバーライドプレフィックスがあります。誰かが私のためにこれを片付けてくれませんか?
これがodからのダンプです:
TARGET_ADDRESSは0x00010000として定義されました。
また、最後の2バイトの重要性にも少し混乱しています。しかし、それはまったく別の質問のようです。かなり遅くなっていて、コードとIntelのマニュアルを何時間も見つめているので、自分の主張が理解できたと思います。
見てくれてありがとう!
iphone - iPhoneでGNUCCompiler/ gcc&Mobile-Terminalを使用して単純なCファイルをコンパイルするにはどうすればよいですか?
iPhoneでGNUCCompiler/ gcc&Mobile-Terminalを使用して単純なCファイルをコンパイルする方法は?!追加のファイルが必要ですか?
inheritance - たとえば Object inheritsFrom: fooobaar が Smalltalk で true を返すのはなぜですか?
GNU Smalltalk の inheritsFrom: メソッドは、パラメーターとして送信された未定義のクラス名ごとに true を返すようです。これにより、プログラムのデバッグが非常に難しくなる可能性があります。Behavior クラスのこのコードを見ると、次のようになります。
行 aClass isNil ifTrue: [^true] が犯人ですが、このようにコーディングされた方法について正当な理由を探しています。(ちなみに、私は Smalltalk の世界は初めてで、学習しようとしています。)
ありがとう。
c++ - Linux で C++ プログラムのメモリ スタックの最大サイズを調べるにはどうすればよいですか? (gnuコンパイラ)
特定のコンパイラと OS の組み合わせの最大スタック サイズを調べる方法に興味があります。Ubuntu/GNU コンパイラを使用しています。私がさらに持っているいくつかの質問は次のとおりです。
- デフォルトの最大スタック サイズを制御するのは誰か。OSまたはコンパイラ?
- デフォルトの最大値は総メモリに応じてスケーリングされますか? (つまり、メモリが 2GB のマシンは、メモリが 512MB しかないマシンよりデフォルト サイズが大きくなります)。
ありがとう!