コンテンツにスキップ

英文维基 | 中文维基 | 日文维基 | 草榴社区

「PL/M」の版間の差分

出典: フリー百科事典『ウィキペディア(Wikipedia)』
削除された内容 追加された内容
編集の要約なし
Cewbot (会話 | 投稿記録)
m Bot作業依頼: sourceタグをsyntaxhighlightタグに置換 (Category:非推奨のsourceタグを使用しているページ) - log
21行目: 21行目:


== PL/M sample code ==
== PL/M sample code ==
<source lang="rexx">
<syntaxhighlight lang="rexx">
FIND: PROCEDURE(PA,PB) BYTE;
FIND: PROCEDURE(PA,PB) BYTE;
DECLARE (PA,PB) BYTE;
DECLARE (PA,PB) BYTE;
43行目: 43行目:
RETURN MATCH;
RETURN MATCH;
END FIND;
END FIND;
</syntaxhighlight>
</source>


==脚注==
==脚注==

2020年7月5日 (日) 23:11時点における版

PL/M
登場時期 1973年 (1973)[1][2]
開発者 デジタルリサーチゲイリー・キルドール[3]
影響を受けた言語 ALGOL, PL/I, XPL英語版
テンプレートを表示

PL/M(Programming Language for Microcomputersの頭文字[1][2])はゲイリー・キルドール[1][2][4][3]が1972年[1][2]に設計・開発した高水準プログラミング言語で、インテルで働くハンク・スミス[1][2]マイクロプロセッサ英語版のために開発された。

PL/IALGOLXPL英語版を参考に[1][2]しており、マクロ処理機能があった。キルドールはワシントン大学在学中にB5500を使用しており[1]ESPOL英語版のような高水準言語を用いたシステムプログラミングに高い可能性があることを知った。

Pascal、C、BASICなどのような現代の言語とは異なり、PL/Mには標準入出力機能がなかった。マイクロプロセッサのような非常に限定された環境下でのプログラミングをターゲットにしており、メモリ、I/O、割り込みなどに対して非常に効率よく直接的にアクセスできるよう設計された。PL/Mはマイクロプロセッサを用いたコンピュータで動作する最初の言語で、CP/Mの初期バージョンはアセンブラではなくこの言語を用いて実装された。1970年代から1980年代にかけ、インテルやザイログZ80の組み込みシステムでPL/Mが使用された。例えばCISC AS/400のサービスプロセッサのファームウェアはPL/Mで記述された。

オリジナルのPL/MコンパイラIntel 8008に対応していた。アップデート版は8080に対応し、新しいIntel 8085でも動作した他、8080の上位互換であるZilog Z80でも動作した。その後Intel 8048Intel 8051に対応し、8086 (8088)80186 (80188)などの8086系列に対応して、80286や32ビットの80386にも対応した。またPL/MコンパイラはIntel 8061英語版や8096/MCS-96英語版等の系列のプロセッサにも対応した。

PL/MコンパイラはIntel ISIS英語版などのOSでもCPUが同じであれば動作する「ネイティブ」設計である一方で、CP/MやマイクロソフトのMS-DOSやDECのVAX/VMSなどで動作するPLMXというクロスコンパイラもあった。

インテルは90年代以降PL/Mをサポートしていないが、PL/M-to-Cトランスレーターなどの社外ツールが存在している(下記外部リンクを参照)。

PL/M sample code

 FIND: PROCEDURE(PA,PB) BYTE;
    DECLARE (PA,PB) BYTE;
    /* 文字列SCRATCHからPAで始まりPBで終わる文字列を探す */
    DECLARE J ADDRESS,
        (K, MATCH) BYTE;
    J = BACK ;
    MATCH = FALSE;
        DO WHILE NOT MATCH AND (MAXM > J);
        LAST,J = J + 1; /* Jから検索を開始 */
        K = PA ; /* 文字列がKで一致するか */
            DO WHILE SCRATCH(K) = MEMORY(LAST) AND
                NOT (MATCH := K = PB);
            /* さらに1文字が一致 */
            K = K + 1; LAST = LAST + 1;
            END;
        END;
    IF MATCH THEN /* 格納先を移動 */
        DO; LAST = LAST - 1; CALL MOVER;
        END;
    RETURN MATCH;
    END FIND;

脚注

参考文献

  • Intel Corporation (1976). PL/M-80 Programming Manual. Doc # 98-268B.
  • McCracken, Daniel D. (1978). A Guide to PL/M Programming for Microcomputer Applications. Pearson Addison-Wesley.

外部リンク

この記事は2008年11月1日以前にFree On-line Dictionary of Computingから取得した項目の資料を元に、GFDL バージョン1.3以降の「RELICENSING」(再ライセンス) 条件に基づいて組み込まれている。