0

「理論的にはCPUに直接命令を書くことができる」と言う人をよく耳にしますが、人間が書くことが可能なアセンブリよりも「直接的」で、セマンティクスからマシン命令への「アセンブリ」なしで実行できるものはありますか? ?

電圧を書き込めないことはわかっていますが、ここで我慢してください....そのようなものはありますか?

4

4 に答える 4

6

アセンブリは、CPU のオペ コード (操作コード) を抽象化したものです。

http://en.wikipedia.org/wiki/Opcode

x86 オペコードのリスト:

http://ref.x86asm.net/coder32.html

実際、オペ コード レベルでプログラミングできます (私は大学でそれを行いました)。たとえば DOS でこれを行うには、16 進エディタを使用して、COM または EXE 形式で指定されたヘッダーをファイルに入力し、op コードを表すバイナリ命令と、op が表すデータのバイナリ表現を書き始めます。コードが作用する可能性があります。

http://en.wikipedia.org/wiki/COM_file

http://en.wikipedia.org/wiki/EXE_file

于 2013-01-16T22:15:11.130 に答える
4

はい、メモリに挿入できるマシンコード自体があります(環境がどの程度「保護」されているかによって異なります)。ソースコードをマシン命令にマッピングする複雑さを除けば、コードのコンパイルとアセンブルにはほとんど違いがありません。

また、一部のプロセッサは実際にはマイクロコードなどのさらに低いレベルを持っていますが、一般的な使用のためにアクセスできることはめったにありません。

于 2013-01-16T22:15:36.427 に答える
0

ずっと前に、CPUチップを搭載した新しい回路基板を立ち上げていたとき、物事を実行し始めるために、16進値をROMチップにプログラミングすることから始めなければなりませんでした。

すべてのCPUチップには、電力が供給されたときに何をするかについての規則があります。通常、メモリ内の固定された場所から何かをロードし、それを最初の命令がロードされるメモリアドレスとして使用するか、実行する最初の命令として使用します。

新しいボードに戻ります。ROMチップをプログラミングした後、チップをボードに接続し、電源を入れました。それが正しいことをしているのかどうかを理解するのは苦痛でした。おそらく、新しいハードウェアは機能していました。おそらくそうではありませんでした。オシロスコープを使用してCPUのデータとアドレス行を監視し、認識可能なパターンであるかどうかを確認しました。あるケースではプロセッサがとてもシンプルだったので、それで十分でした。

それが実際に発生していることがわかったら、クロスアセンブラー(またはクロスコンパイラー)を使用して、実行するものの低レベルコードを記述し始めます。16進バイトが生成され、プロセッサが実行する必要のあるパターンで別のROMに書き込まれます。すぐに動作します。(または、それほど早くはないかもしれません。)

私が覚えているのはこれを2回だけしたことです。あるケースでは、小さなボードはハードウェアポートに入ってくるバイトをリッスンし、他のバイトを別のポートに送信することによってそれらに応答する必要がありました。それが外の世界とのつながりでした。(実際には、今日のWebサービスに似ています。バイトが入り、バイトが出ます。)

それは挑戦的で苛立たしいですが、非常に充実しています。やったことがうれしいです。もうやりたくない。

于 2013-01-18T17:28:57.043 に答える
0

他の人が言ったように、機械語。一部の CPU レベルのコマンドがアセンブリ言語で公開されていないことは前代未聞ではありません。ニーモニックはありません。Intelの悪名高いLOADALLことが最初に思い浮かびます-CPUに存在していましたが、アセンブラーはそれを認識しません。

dbこれを使用するには、アセンブリ コマンドを使用して、関連するバイトをコードに直接挿入します。

質問が - どうすればアセンブラーなしで機械語を書けるかということであれば、答えは - 16 進エディターを使用することです。

編集: アセンブリ自体が、必要以上に高レベルである場合があります。MIPS アセンブラーは組み込みマクロ (オペランドとコマンド ライン オプションの詳細に応じて、1 つまたは複数のコマンドに展開されるニーモニック) を持つことで知られています。Thumb-2 モードの ARM は同じことを行います。これは、基礎となる命令セットが意図的にスタント (RISC) されていることに関係しています。

于 2013-01-17T15:55:14.370 に答える