ホームページ よくある問題 高級言語のソースプログラムをターゲットプログラムに加工できるシステムソフトウェアとは何ですか?

高級言語のソースプログラムをターゲットプログラムに加工できるシステムソフトウェアとは何ですか?

Jul 26, 2022 pm 02:58 PM
高級言語 ソースプログラム ターゲットプログラム

高級言語のソースプログラムをターゲットプログラムに加工するシステムソフトウェアが「コンパイラ」です。コンパイラとは、高級プログラミング言語で記述されたソース プログラムを、機械語形式の同等のターゲット プログラムに翻訳する翻訳プログラムを指します。ソースプログラムをターゲットプログラムに変換するコンパイラの作業プロセスは、字句解析、構文解析、中間コード生成、コード最適化、ターゲットコード生成の5つの段階に分かれており、主に字句解析と構文解析(ソースプログラム解析とも呼ばれます) , 分析中に文法上のエラーが見つかった場合は、プロンプトメッセージが表示されます。

高級言語のソースプログラムをターゲットプログラムに加工できるシステムソフトウェアとは何ですか?

このチュートリアルの動作環境: Windows 7 システム、Dell G3 コンピューター。

高級言語で書かれたソースプログラムを処理してターゲットプログラムにするシステムソフトウェアが「コンパイラ」です。

コンパイラ、コンパイル プログラム (コンパイラとも呼ばれる) は、高級プログラミング言語で書かれたソース プログラムを機械語形式の同等のターゲット プログラムに翻訳する翻訳プログラムを指します。コンパイラは、生成的実装アプローチを使用して実装される翻訳プログラムです。高級プログラミング言語で書かれたソースプログラムを入力とし、アセンブリ言語や機械語で表現されたターゲットプログラムを出力とします。コンパイルされたターゲット プログラムは、通常、実行中のプログラムのサポートを受けて実行し、初期データを処理し、必要な計算結果を計算するために、実行段階も通過します。

コンパイラはソース プログラムを解析し、それをターゲット プログラムに合成する必要があります。まず、ソース プログラムの正当性をチェックし、それをいくつかの基本コンポーネントに分解し、次に、これらの基本コンポーネントに基づいて、対応する同等のターゲット プログラム部分を確立します。これらのタスクを完了するために、コンパイラは分析フェーズ中にいくつかのテーブルを作成し、分析および合成中に簡単に参照および処理できるようにソース プログラムを中間言語形式に変換する必要があります。

コンパイラの特徴:

コンパイラはソース プログラムを解析し、それをターゲット プログラムに合成する必要があります。まず、ソース プログラムの正当性をチェックし、それをいくつかの基本コンポーネントに分解し、次に、これらの基本コンポーネントに基づいて、対応する同等のターゲット プログラム部分を確立します。これらのタスクを完了するために、コンパイラは分析フェーズ中にいくつかのテーブルを作成し、分析および合成中に簡単に参照および処理できるようにソース プログラムを中間言語形式に変換する必要があります。

データ構造の分析と合成で使用される主なデータ構造には、シンボル テーブル、定数テーブル、中間言語プログラムなどがあります。シンボル テーブルは、ソース プログラムで使用される識別子とその属性で構成されます。属性には、型 (変数、配列、構造体、関数、プロシージャなど)、型 (整数、実数型、文字列、複合型など) が含まれます。 、ラベル)など)、およびターゲット プログラムで必要なその他の情報。定数テーブルは、ソース プログラムで使用される定数 (定数のマシン表現を含む)、および定数に割り当てられたターゲット プログラムのアドレスで構成されます。中間言語プログラムは、ソース プログラムをターゲット プログラムに変換する前に導入されるプログラムの中間形式であり、その表現の選択は、コンパイラが後でそれをどのように使用および処理するかによって決まります。一般的に使用される中間言語形式には、ポーランド語表現、トリプル、クアドルプル、および間接トリプルが含まれます。

ソースプログラムの一部の解析は、字句解析、構文解析、意味解析の3つのステップで行われます。字句解析は、字句解析プログラム (スキャナーとも呼ばれます) によって完了します。そのタスクは、単語 (つまり、識別子、定数、予約語、さまざまな演算子、句読点など) を識別し、記号テーブルと定数テーブルを作成し、変換 ソースプログラムをコンパイラが解析・処理しやすい内部形式に変換します。構文アナライザーはコンパイラーの中核部分であり、その主な役割は、ソース プログラムが言語の文法規則に従って文法的であるかどうかをチェックすることです。文法的でない場合は構文エラーメッセージが出力され、文法的である場合はソースプログラムの文法構造を分解して中間言語形式の内部プログラムを構築します。文法分析の目的は、単語がどのように文を形成し、ステートメントがどのようにプログラムを形成するかを理解することです。意味解析プログラムは、法的なプログラム構造が意味的に正しいかどうかをさらにチェックし、識別子や定数が正しく使用されていることを確認し、必要な情報を収集してシンボルテーブルや中間言語プログラムに保存し、対応する意味処理を実行することを目的としています。

コンパイラの作業プロセス

コンパイラはコンパイル システムとも呼ばれ、高言語で書かれたプロセス指向のソース プログラムを翻訳します。レベル言語をターゲット プログラムの言語プロセッサに組み込みます。ソース プログラムをターゲット プログラムに変換するコンパイラのプロセスは、字句解析、構文解析、中間コード生成、コードの最適化、ターゲット コードの生成の 5 つの段階に分かれています。主にソースプログラム解析とも呼ばれる字句解析と構文解析を行い、解析の過程で文法上の誤りを発見し、迅速な情報を提供します。

(1) 字句解析

字句解析のタスクは、文字で構成される単語を処理し、ソース プログラムを 1 文字ずつ左から右にスキャンすることです。文字列としてのソースプログラムを単語記号列の中間プログラムに変換します。字句解析を実行するプログラムは、レクサーまたはスキャナーと呼ばれます。

ソース プログラム内の単語シンボルはスキャナーによって分析され、通常、単語カテゴリ、単語自体の値といったバイナリ式が生成されます。単語カテゴリは通常、整数でエンコードされます。カテゴリに単語シンボルが 1 つだけ含まれている場合、この単語シンボルについては、カテゴリのエンコードはそれ自体の値を完全に表します。カテゴリに多くの単語シンボルが含まれている場合、カテゴリ コードに加えて、その単語シンボルごとに独自の値も指定する必要があります。

字句解析器は通常、手動構築と自動生成の 2 つの方法で構築されます。手動による構築は状態図を使用して機能し、自動生成は決定論的な有限オートマトンを使用して実装できます。

(2) 構文解析

コンパイラの構文解析器は、単語記号を入力として、単語記号列が文法規則に適合した文法単位を形成しているかどうかを解析します。式、代入、ループなどの式を実行し、最終的に要件を満たすプログラムを構成しているかどうかを確認し、各文が言語の文法規則に従って正しい論理構造を持っているかどうかを分析して確認します。最後の文法単位。コンパイラの文法規則は、文脈自由文法によって特徴付けることができます。

構文分析には、トップダウン分析とボトムアップ分析の 2 つの方法があります。トップダウンとは、文法の開始記号から始めて、下向きに推論して文を導き出すことを意味します。ボトムアップ分析手法はシフトイン リダクション手法を使用しており、基本的な考え方は、登録シンボルの先入れ後ポップアウトを使用して、入力シンボルを 1 つずつスタックに移動することです。特定の表現の候補を選択すると、スタックの上部がその表現の左隣のシンボルに減らされます。

(3) 中間コード生成

中間コードは、ソース プログラムの内部表現、または中間言語です。中間コードの機能は、コンパイルされたプログラムの構造を論理的により単純かつ明確にし、特にターゲット コードの最適化を実装しやすくすることです。中間コードは中間言語プログラムであり、中間言語の複雑さはソースプログラム言語と機械語の中間にあります。中間言語には多くの形式がありますが、一般的な形式は、逆ポーランド記法、四字形、三項形式、およびツリーです。

(4) コードの最適化

コードの最適化とは、変換されたプログラムから始めて、より効果的な目標を達成するコードを生成できるように、プログラム上で複数の同等の変換を実行することを指します。いわゆる等価性とは、プログラムの実行結果が変更されないことを意味します。いわゆる効果的とは主に、ターゲット コードの実行時間が短く、占有されるストレージ容量が小さいことを指します。この変換は最適化と呼ばれます。

最適化には 2 種類あり、1 つは特定のコンピューターに依存せず、構文解析後の中間コードを最適化するもの、もう 1 つはターゲット コードを生成する際に実行されるもので、これはかなりの範囲で行われます。特定のコンピュータに依存します。前者のタイプの最適化は、関係するプログラムの範囲に応じて、ローカル最適化、ループ最適化、およびグローバル最適化の 3 つの異なるレベルに分類できます。

(5) ターゲット コードの生成

ターゲット コードの生成はコンパイルの最終段階です。ターゲット コード ジェネレーターは、構文解析または最適化された中間コードをターゲット コードに変換します。ターゲット コードには 3 つの形式があります:

① すぐに実行できる機械語コード (すべてのアドレスが再配置されます);

② アセンブルされる機械語モジュール (接続時に接続によってロードされます)実行する必要があります プログラムはそれらを特定の実行中のプログラムに接続し、それらを実行可能な機械語コードに変換します;

③ アセンブリ言語コードは、実行可能な機械語コードになるようにアセンブラーによってコンパイルされる必要があります。

ターゲット コードの生成段階では、ターゲット コードの速度に直接影響する 3 つの問題を考慮する必要があります: 1 つ目は、より短いターゲット コードを生成する方法、2 つ目は、コンピュータ内のレジスタを最大限に活用して負荷を減らす方法ターゲットコードが記憶装置にアクセスする時間 3 つ目は、コンピュータ命令システムの特性を最大限に活用してターゲットコードの品質を向上させる方法です。

関連知識の詳細については、FAQ 列をご覧ください。

以上が高級言語のソースプログラムをターゲットプログラムに加工できるシステムソフトウェアとは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

機械語、アセンブリ言語、高級言語の特徴は何ですか? 機械語、アセンブリ言語、高級言語の特徴は何ですか? Apr 22, 2021 pm 04:00 PM

機械語の特徴: 学習、理解、理解が困難、汎用的ではない、手動でのメモリ割り当てが必要、実行速度が速い。アセンブリ言語の特徴は、プログラムの実行効率が非常に高く、記憶容量が少なく、実行速度が速いという点にありますが、汎用性に欠け、プログラムの移植が容易ではありません。高級言語の特徴: 簡単で、ある程度の汎用性があり、コンピュータによって直接認識して実行することができません。

高級言語で書かれたソースプログラムをターゲットプログラムに翻訳できるシステムソフトウェアとは何ですか? 高級言語で書かれたソースプログラムをターゲットプログラムに翻訳できるシステムソフトウェアとは何ですか? Jan 22, 2021 pm 05:36 PM

高級言語で書かれたソースプログラムをターゲットプログラムに翻訳できるシステムソフトウェアが「コンパイラ」です。コンパイラは、生成実装アプローチを使用して実装された変換プログラムであり、高級プログラミング言語で記述されたソース プログラムを入力として受け取り、アセンブリ言語または機械語で表現されたターゲット プログラムを出力として使用します。

アセンブリ言語は高級言語ですか? アセンブリ言語は高級言語ですか? Jan 30, 2023 pm 03:14 PM

アセンブリ言語は高級言語ではなく、機械語のような低級言語です。アセンブリ言語と高級言語の違い 1. アセンブリ言語のプログラミング効率は高くないが、高級言語のプログラミング効率はアセンブリ言語より高い; 2. 高級言語の可読性は高いアセンブリ言語よりも高度である; 3. アセンブリ言語は機械語であるのに対し、高級言語は簡略化され人間の自然言語に近いものです。

機械語は高級言語ですか? 機械語は高級言語ですか? Aug 22, 2023 pm 05:13 PM

マシン語は高級言語ではありません。コンピュータ ハードウェアに使用される低レベル言語です。コンピュータの基盤となるハードウェアと直接対話します。マシン語はバイナリ エンコーディングを使用して命令とデータを表します。各命令は 1 つの操作に対応します, 高級言語は、人間の言語に近く、抽象化能力が高く、開発効率が高いプログラミング言語です。機械語と高級言語は、プログラミングにおいて異なる役割を果たし、それぞれに独自の利点と利点があります。適用可能なシナリオ。

JS/ArkTS高級言語をサポートする世界初のオープンソースHongmengベースの人型ロボットをリリース JS/ArkTS高級言語をサポートする世界初のオープンソースHongmengベースの人型ロボットをリリース Nov 17, 2023 pm 08:07 PM

Kuai Technologyは11月17日、深センKaihongが今朝、同社とLeju Robotが共同開発したオープンソースHongmengをベースにした初のKaihongOS人型ロボットが正式にリリースされたと発表したと報じた。公式の紹介によると、これは KaihongOS を搭載し、ロボットをキャリアとして使用し、産業やサービスなどの複数のシナリオをカバーするオールインテリジェント教育システムです。このロボットには、血中酸素心拍数センサー、温湿度センサー、赤外線温度センサー、人体誘導センサー、NFC、OLEDディスプレイ、LEDライトが装備されています。複数の関節センシングにより、意思決定をインテリジェントに実行できると同時に、ロボットは携帯電話、タブレット、コンピュータなどのデバイスとリアルタイムで相互接続できるため、従来のワイヤーハーネス接続方法が廃止され、教育効率が向上します。同時に、このロボットには 17 の機能もあります。

Cソースプログラムのmain関数はどこにあるのでしょうか? Cソースプログラムのmain関数はどこにあるのでしょうか? Nov 19, 2020 am 11:06 AM

C言語では、ソースプログラム中でのmain関数の位置は任意であると規定されており、C言語で書かれたプログラムを実行する場合、main関数がソースプログラム内のどの位置にあるかに関係なく、main関数は実行プログラムの入り口に相当します。プロセス全体において、C プログラムは常に mam 関数から実行を開始します。

Go 言語の機能分析: 高級言語ですか? Go 言語の機能分析: 高級言語ですか? Mar 23, 2024 pm 04:00 PM

Go 言語の機能分析: 高級言語ですか? Go 言語は、Google によって開発された静的に強く型付けされたプログラミング言語で、シンプルで読み書きしやすいように設計されており、効率的な同時実行機能を備えています。そこで、高級言語の定義に従って、Go 言語が高級言語であるかどうかを分析してみましょう。高級言語の定義 高級言語は、機械語よりも人間の言語に近いプログラミング言語です。簡潔な構文、読み書きが容易、および高度な抽象化という特徴があり、プログラマーは問題自体の解決に集中できます。

ソースプログラムとは何で書かれたプログラムですか? ソースプログラムとは何で書かれたプログラムですか? Aug 29, 2022 pm 04:47 PM

「プログラミング言語」で書かれたプログラムをソースプログラムといいます。ソース コードとは、特定のプログラミング言語仕様に従って書かれたコンパイルされていないテキスト ファイルを指し、通常は高級言語で書かれた人間が判読できる一連のコンピューター言語命令を指します。コンピュータ ソース プログラムの最終的な目標は、人間が読めるテキストをコンピュータが実行できるバイナリ命令に変換することです。このプロセスはコンパイルと呼ばれ、コンパイラによって完了します。