タグ付けされた質問 「machine-code」

9
マシンコードでプログラムすることを学ぶためのリソース?[閉まっている]
現在のところ、この質問はQ&A形式には適していません。回答は事実、参考文献、または専門知識によってサポートされると予想されますが、この質問は議論、議論、世論調査、または詳細な議論を求める可能性があります。この質問を改善し、おそらく再開できると思われる場合は、ヘルプセンターをご覧ください。 7年前に閉鎖されました。 私はプログラミングから始めて、JavaからC ++、そしてCに至るまで、プログラミングに夢中な学生です。私は、骨組みに戻り、さらにアセンブリに進むと考えました。 しかし、驚いたことに、多くの人がCほど速くなく、使い道がないと言っていました。彼らは、カーネルのプログラミング方法を学ぶか、Cコンパイラを書くことを提案しました。私の夢は、バイナリ(マシンコード)でプログラムするか、ベアメタルをプログラムする(物理的にマイクロコントローラーをプログラムする)か、BIOSやブートローダーなどを書くことです。 あまりにも多くの調査の結果、私が聞いた唯一の可能性は、16進エディタがこの時代と時代に私が見つけた機械語に最も近いものであったということです。私が知らない他のものはありますか?マシンコードでプログラミングすることを学ぶためのリソースはありますか?8ビットのマイクロコントローラー/マイクロプロセッサーが望ましい。 この質問は私の質問に似ていますが、最初に実践的な学習に興味があり、次に理論を理解することに興味があります。

4
ネイティブマシンコードを簡単に逆コンパイルできないのはなぜですか?
Java、VB.NET、C#、ActionScript 3.0などのバイトコードベースの仮想マシン言語では、インターネットからデコンパイラーをダウンロードしてバイトコードを1回実行するだけの簡単さについて時々耳にします。多くの場合、数秒で元のソースコードからそれほど離れていないものを見つけます。おそらく、この種の言語はそれに対して特に脆弱です。 私は最近、ネイティブバイナリコードに関して、これが元々どの言語で書かれていたのか(したがって、どの言語に逆コンパイルしようとするのか)を少なくとも知っているのに、なぜこれについて聞いていないのだろうと思い始めました。長い間、ネイティブマシン言語が典型的なバイトコードよりも非常にクレイジーで複雑だからだと考えていました。 しかし、バイトコードはどのように見えますか?次のようになります。 1000: 2A 40 F0 14 1001: 2A 50 F1 27 1002: 4F 00 F0 F1 1003: C9 00 00 F2 そして、ネイティブマシンコードは(16進数で)どのように見えますか?もちろん、次のようになります。 1000: 2A 40 F0 14 1001: 2A 50 F1 27 1002: 4F 00 F0 F1 1003: C9 00 00 F2 そして、指示はやや似たような心構えから来ています。 1000: mov EAX, 20 …

3
実行可能ファイルがCPUではなくOSに依存するのはなぜですか?
Cプログラムを作成して.exeファイルにコンパイルすると、ファイル.exeにはCPUへのrawマシン命令が含まれます。(おもう)。 その場合、最新バージョンのWindowsを実行するコンピューターでコンパイルされたファイルを実行するにはどうすればよいですか?CPUの各ファミリには、異なる命令セットがあります。それでは、適切なOSを実行するコンピューターが、.exe物理CPUに関係なく、ファイル内の命令を理解できるのはなぜでしょうか。 また、一部のアプリケーションの「ダウンロード」ページのWebサイトでは、Windows、Linux、およびMac用のダウンロードがあります(各OS、86および64ビットコンピューター用に多くの場合2回ダウンロード)。CPUファミリごとにダウンロードがこれほど多くないのはなぜですか?

4
ATMやテレビなどのマシンのソフトウェアはどのように構築されていますか?
初心者プログラマーとして、私はコンピューターベースのアプリケーションのプログラミングでしか仕事をしていませんが、プログラミングを始めてからよく質問があり、適切に答えられません。 機械はそれ自体では動作しません。それはプログラマーの仕事です。彼は何をいつ何をするかを教えてくれますが、私の好奇心はコンピューターの下にあります。この記事ではATMソフトウェアの例を取り上げますが、洗濯機のディスプレイやテレビ、携帯電話など、他にもたくさんあることを覚えておいてください。 この種のマシンのソフトウェアはどのくらい正確に構築されていますか?コンピューターベースのプログラミングと同じになることはないと思います。彼らはそのようなことを機能させるためにどの言語を使用し、どのように仕事を成し遂げますか?この種のプログラミングに特化したプログラマーはいますか?これらのマシンに命を吹き込むプロセスは何ですか?

6
「Cでアセンブラーを記述します。」なぜ低レベル言語の機械語翻訳機を高レベル言語で書くのですか?
私のマイクロプロセッサクラスのインストラクターが私たちに課題を与えて言った: 「Cでアセンブラーを作成します。」-私の最愛の教授 だから、私には少し非論理的に思えた。 私が間違っていなければ、アセンブリ言語は、機械語コードから高レベル言語の旅への最初のステップです。つまり、Cはアセンブリよりも高レベルの言語です。では、Cでアセンブラーを書く意味は何ですか?C言語がないのに、彼らは過去何をしていたのですか?彼らはマシンコードでアセンブラーを書いていましたか? 低レベル言語用の機械語翻訳を高レベル言語で書くのは意味がありません。 たとえば、そのアーキテクチャ用のCコンパイラさえない、まったく新しいマイクロプロセッサアーキテクチャを作成したとします。Cで記述されたアセンブラは、新しいアーキテクチャをシミュレートできますか?私はそれが役に立たないかどうかを意味しますか? ところで、GNU AssemblerとNetwide AssemblerはCで書かれていることを知っています。また、なぜそれらがCで書かれているのだろうかと思っています。 最後に、これは私たちの教授が私たちに与えた単純なアセンブラのソースコードの例です。 // to compile, gcc assembler.c -o assembler // No error check is provided. // Variable names cannot start with 0-9. // hexadecimals are twos complement. // first address of the code section is zero, data section follows the code section. …


1
マシンコードJITと実行無効ビット
CPU / OSに実行無効ビットがある場合、ランタイム生成のマシンコード(JITの出力など)は実際にはどのようにCPUによって実行されますか? 私の知る限りでは、多くの最新のプロセッサおよびオペレーティングシステムは、NXのサポートは、任意のアドレスに格納されている防止マシンコード、(インテルおよびARMを含む)は、ビット含む他の実行中からコンパイルされたバイナリのコードセクションより。明らかに、これはシェルコードインジェクション攻撃を防ぐので、優れたセキュリティ上の利点です。 しかし、動的にマシンコードを生成するLLVMのようなJITエンジンはどうやってこれを回避するのでしょうか?
10 machine-code  jit  llvm 

5
コンパイラー作成者は実際にマシンコードを「理解」する必要がありますか?[閉まっている]
休業。この質問は意見に基づいています。現在、回答を受け付けていません。 この質問を改善してみませんか?この投稿を編集して、事実と引用で回答できるように質問を更新してください。 6年前休業。 ちょっと変わった質問かもしれません。 C ++コンパイラ(またはVM以外の言語)を書く人:生の機械語を読み書きできる必要がありますか?それはどのように機能しますか? 編集:私は特に、他のプログラミング言語ではなく、マシンコードにコンパイルするコンパイラについて言及しています。
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.