2011-08-15 20 views
2

私はアセンブラでプログラムを書いていますが、誤ってオペコードを誤って使用したり、ある種のバグを導入したりします。アセンブリ言語は危険ですか?

アセンブリがそのような低レベル言語であるため、私が誤って何か破壊的なことを行う可能性がありますか?

オペレーティングシステム(一部または全部)はこれを軽減するために、適切なレベルのリソース管理やサンドボックスなどを維持していますか?

+2

「破壊的」と「危険な」とはどういう意味ですか? – Incognito

+0

@Incognitoディクショナリの定義である "被害を受けやすい"。 –

+1

@digitxp "何を害する?" –

答えて

3

はい、間違ったコードを書き込むと、悪いことが起こる可能性があります。これは多くの言語で、さらには高レベルのものであっても当てはまります(仮説的な高水準言語ではSystem.delete("*.*")を考慮する)。しかし、アセンブラでは、見つけにくいミスをするのは非常に簡単です。

3

バグがある可能性のあるCプログラムを実行することと変わりはありません。結局のところ、上位プログラムでも最終的にマシン命令が実行されることになります。アセンブリでプログラミングするときは、その最終結果に少し近づき始めます。 OSが提供する保護の範囲外でコードを実行している場合を除き、特に問題はないはずです。

2

「危険」とは何ですか?

開発者は、低レベルまたは高レベルの言語で間違いを犯し、望ましくない動作を引き起こす可能性があります。望ましくない動作が危険であるかどうかは、アプリケーションによって異なります。たとえば、私は主に、生命にかかわる医療アプリケーション向けの組み込みシステムで作業します。私の研究では、コーディングエラーが患者に危害を加える可能性があります。同様に、別のバグがデバイスに損害を与える可能性があります(たとえば、LCD画面リフレッシュコントローラのタイミングバグ、電源のアクティブ化または非アクティブ化シーケンスのロジックバグなど)。

アセンブリで作業する場合、実行されるコードに対するすべての責任。より高いレベルの言語で作業する場合、コンパイラはその負担の一部を負担します。結果として、開発者が「ベアメタル」コードを書くことに陥ったときに、間違いを簡単に作り出すことができます。ソフトウェア開発プログラムは、間違いを最小限に抑えるために適切なプロセス(適切な文書、コーディング標準、設計レビュー、コードレビューなど)を備えていなければなりません。