コンピュータ上で動作するプログラムは、 プログラム言語で書かれており、処理する 内容に依って使い分けられる。
高水準言語(第3世代言語)よりさらに抽 象度の高い命令をもつプログラム言語
4GLの指す内容は文脈によって異なるので 注意が必要
エンドユーザ向き言語 小規模で簡単な処理に向く
プログラム言語→機械語
言語処理プログラム
ON OFF ON OFF OFF OFF ON ON SW LED
実験用マイクロコンピュータボードで 入力SWに対応するLEDを点灯する ただし、入力SWのポート番号は11111001(F9) 出力LEDのポート番号は11111000(F8)とする
1101101111111001 1101001111111000
DB F9 D3 F8
低水準言語 機械語 アセンブリ言語 人間に解りにくい 特定のハードウェアに依存する プログラムを小さくすることができる プログラムを高速に実行することができる
アセンブリ言語
ON OFF ON OFF OFF OFF ON ON SW LED
機械語と一対一に対応 入力SWのポート番号は(F9)、出力LEDのポート番号は(F8)、 プロセッサはZ80
IN A, (??) → DB ?? OUT (??), A → D3 ?? IN A, (F9) DB F9 OUT (F8), A D3 F8
アセンブリ 言語 機械語 アセンブラ
高水準言語
人間の言語表現に近い構造をもつ 記述に、汎用性・可搬性がある 特定のハードウェアに依存しない 現在の主流 COBOL, Fortran, c, pascal, c++, java lisp, prolog, SQL
高水準言語 ON OFF ON OFF OFF OFF ON ON SW LED c言語
unsigned int a; a = get_SW_status(); set_LED_on(a);
入出力関数は専用ライブラリで 用意されなければならない
Fortran
INTEGER A READ (9, *) A WRITE (8, *) A
入出力装置番号8/9はシステム により定義されていなければな らない
コンパイラ(翻訳型) 高水準言語で書かれたプログラムを機械語 に一括翻訳した後、実行する 高速、エラーを取り除くのが難しい インタープリタ(解釈型) 高水準言語で書かれたプログラムを一行づ つ機械語に解釈し逐次実行する 低速、扱い易い
プログラムの作成から実行まで
#include <stdio.h> int main(void) { printf("Hello\n"); }
原始プログラム (Source program) testc.c
00101Hello11000 101_main0011001 10101_printf0001
目的プログラム (Object module) testc.o
001010101110001 010011001100110 101010111100001
実行可能プログラム (Executable module) a.out <code> 0011_printf00010 1101_getc000111 1011_scanf11100 <code> ライブラリ (Library) libc.a
リンク(連係編集)
概要
プログラムの作成から実行まで hello.c int main(){ printf(“Hello,world\n”); } hello.o 0110010100_main_000 110001100110_printf _0 a.out 0110010100001110000 1100011001100101010 10 コンパイラ リンカ Source program Object module Loadable module プログラム(モジュール)の保存 ファイル T97E121 T97E121 T97E121 85 48 72 A D B フィールド レコード 011000 011110 110100 ビット列
処理過程