問題タブ [assembly]
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.
javascript - この milw0rm ヒープ スプレー エクスプロイトはどのように機能しますか?
私は通常、JavaScript コードを読むのに苦労しませんが、これについてはロジックを理解できません。このコードは、4 日前に公開されたエクスプロイトからのものです。これはmilw0rmにあります。
コードは次のとおりです。
これが私が信じていることであり、私が誤解している部分についてあなたに助けてもらいたい.
変数shellcode
には、 を開くためのコードが含まれていますcalc.exe
。どうやってその奇妙な文字列を見つけたのかわかりません。何か案が?
2 つ目は変数ですspray
。この奇妙なループがわかりません。
memory
3 つ目は、どこにも使用されない変数です。なぜ彼らはそれを作成するのですか?
最後に: XML タグはページ内で何をしますか?
今のところ、私は良い答えを持っていますが、ほとんどは非常に一般的なものです. コードの価値についてもっと説明が欲しいです。例はunescape("%u0a0a%u0a0a");
です。どういう意味ですか?ループについても同じです。なぜ開発者は次のように書いたのですlength < 0xd0000
か。このコードの理論だけでなく、より深い理解をお願いします。
c# - アセンブラの構築
私が構築した CPU アーキテクチャ用のアセンブラを構築する必要があります。アーキテクチャは MIPS に似ていますが、これは重要ではありません。
私は C# を使い始めましたが、C++ の方が適切でしょう。(C# は私にとって開発時間の短縮を意味します)。
私の唯一の問題は、このアプリケーションに適した設計ができないことです。私は2パスアセンブラを構築しています。各パスで何をする必要があるかはわかっています。\
私は最初のパスを実装しましたが、アセンブリ コードを同じ行に並べる必要がある場合、エラーは発生しないことに気付きました。
ですから、全能のプログラマー、アセンブラーの父たちは、私がどのように進めればよいかを教えてくれます。シンボルとデータ宣言をサポートする必要があるだけです。命令は固定サイズです。
さらに情報が必要な場合はお知らせください。
c++ - ヒープに格納されたコードを vc++ から呼び出す
私がこのようなことをしていると想像してください:
関数であるかのように p を呼び出す関数ポインタを定義するにはどうすればよいですか? (私は VC++ 2008 Express を使用しています)。
ありがとう
c - AT&T IA-32 Linux アセンブラー (ガス) で文字列を分割する
.asciz 文字列 1101011 を壊して最初のものを取得したいとします。どうすればいいですか?上記のコードは機能しません。49 か何かが出力されます。
linux - Linux IA-32 アセンブラー (ガス) で部分文字列を作成する
元の文字列 (文字列) から 3 つの asciz 文字の部分文字列 (ミニ文字列) を作成したい。実行中に印刷されないので、自分が何をしているのかわかりません。なぜ印刷されないのですか?ミニストリングを正しく作成していますか?
assembly - すでに印刷された値をASMで印刷
日付(日、月、年)と時刻(時、分、秒)を表示するASMスクリプトがあります。
これにより、現在の日時がDOSボックスに出力されます。物事は、それは静的です。私がやりたいのは、動的にすることです。つまり、現在の値が画面上にある正確な場所に新しい値を書き込む必要があります。ASMでこれをどのように行いますか?
私にはまったく手がかりがなく、グーグルはこれについての私の友達ではありませんでした。
assembly - (N)ASM を学習するのに最適なリソースは何ですか?
以前から組み立てを学びたいと思っていて、何度かやってみましたが、「Hello, world」からなかなか抜けられませんでした。アセンブリに関する優れた入門チュートリアルはありますか (私は Windows と Linux を使用しているため、できれば NASM を使用します)。
C の知識は少しありますが、主に Ruby、Python、C#、JavaScript などの高水準言語でコーディングしています。
pointers - アセンブリを学習することの実際的な利点は何ですか?
ほとんどの人は、アセンブリの学習が不可欠であり、コンピューターの基礎となる仕組みを知ることが重要であるなどと示唆しています。しかし、私が探しているのは、Assembly を学習する努力を価値あるものにする実用的な提案です。
あなたの提案は何ですか?一般に、アセンブリとポインター/メモリ管理を学習しないことで、私は何を見逃していますか?
gcc - LLVMとGCCMIPSコード生成、ベンチマークはありますか?
MIPSコード、GCC、またはLLVMに「最適な」フリー/ OSSコンパイラーとは何かを知りたいのですが、それよりも優れたものはありますか?
コードサイズよりも、高速でメモリに制約のある生成されたアセンブリコードについてもっと知りたいです。
言い換えれば、llvm-optはgcc -O3よりもうまく機能しますか?
performance - 最新の CPU は正確にどのくらい「高速」ですか?
組み込みシステムと初期の 8/16 ビット PC (6502、68K、8086) をプログラミングしていたとき、各命令の実行にかかる正確な時間 (ナノ秒またはマイクロ秒) をかなりよく把握していました。ファミリによっては、1 (または 4) サイクルが 1 回の「メモリ フェッチ」に相当し、キャッシュを気にする必要がなければ、関係するメモリ アクセスの数に基づいてタイミングを推測できます。
しかし、最近の CPU では混乱します。それらがはるかに高速であることは知っていますが、見出しのギガヘルツ速度は、各命令に必要なクロックのサイクル数を知らなければ役に立たないことも知っています.
したがって、2GHz Core 2 Duo (としましょう) で、2 つのサンプル命令のタイミングを誰かが提供できますか。最良のケースと最悪のケース (キャッシュに何もない/すべてがキャッシュにあると仮定) が役に立ちます。
命令 #1: 1 つの 32 ビット レジスタを 2 番目に追加します。
命令 #2: 32 ビット値をレジスタからメモリに移動します。
編集:私がこれを尋ねる理由は、単純なコードを見て、最も近い桁までの時間を大まかに測定できるようにする「経験則」を開発しようとすることです。
編集#2:興味深い点を含む多くの回答がありますが、(まだ)誰も時間で測定された数字を書き留めていません. 質問に「複雑さ」があることは承知していますが、おいでください: NYC のピアノ調律師の数を見積もることができれば、コードの実行時間を見積もることができるはずです...
次の (ダム) コードを使用します。
実行にかかる時間をどのように見積もればよいでしょうか... 1 フェムト秒ですか? 1ギガ年?