OpenFrame ASM 검증
본 장에서는 OpenFrame ASM을 설치한 후 ASM 파일을 컴파일하는 방법과 컴파일 명령어 옵션에 대하여 기술한다. 또한 외부 프로그램을 호출하는 경우 필요한 인터페이스 모듈 생성 툴을 이용하는 방법과 명령어 옵션과 g++를 인터페이스 모듈 컴파일 방법에 대하여 기술한다.
1. 컴파일
OpenFrame ASM을 설치한 후 ofasm 명령어를 사용하여 ASM 샘플을 컴파일하는 방법에 대한 설명이다.
-
$OFASM_HOME의 다음 위치에서 ASM 샘플을 확인한다.
$OFASM_HOME/sample
-
sample.asm 샘플을 컴파일한다.
ofasm ADD.asm
-
컴파일 결과 .asmo 파일로 출력 파일이 생성된 것을 확인할 수 있다. asmo 파일은 $LD_LIBRARY_PATH에 지정된 곳에 위치해야 한다.
ADD.asmo
1.1. ofasm 명령어
다음은 OpenFrame ASM에서 컴파일 명령어를 사용하는 방법이다.
ofasm 소스 파일 ... [명령 옵션...]
-
소스 파일
반드시 파일의 확장자가 asm으로 되어야 ASM 소스 파일로 인식한다.
-
명령 옵션
다음은 소스 파일을 컴파일하는 기본 명령어 옵션에 대한 설명이다.
옵션 설명 -o <파일이름>
오브젝트 파일의 이름을 지정한다. 본 옵션을 사용하지 않으면 오브젝트 파일의 이름은
<입력 파일 이름>.asmo
로 지정된다.--debug
전처리 및 컴파일에 관련된 로그 메시지를 출력한다.
-L <dir>
매크로 라이브러리 경로를 설정한다.
-h(H) 또는 --help
도움말을 출력한다.
--version
OpenFrame ASM의 버전 정보를 출력한다.
-E
전처리 과정만 수행한다. 입력으로는
.asm
파일을 받으며, 출력으로는.asmi
파일을 생성한다.-S
어셈블리 과정만 수행한다. 입력으로는
.asmi
파일을 받으며, 출력으로는.asmo
파일을 생성한다.--enable-cics
CICS 라이브러리를 활성화한다.
--list
OpenFrame ASM에서 지원 가능한 macro, copybook과 machine 및 assembler instruction, outdated instruction 을 출력한다.
-x <params..>
command line에서 사용자가 지정한 매개변수에 대해 즉시 어셈블러 프로그램을 실행한다. 매개변수는 16진수 값만 사용할 수 있다.
-f <filepath>
이 옵션은 -x 옵션이 사용될 때만 함께 사용할 수 있다. 매개변수의 정보를 정의한 JSON 형식의 파일을 지정한다.
-r <reg_no> <value>
이 옵션은 -x 옵션이 사용될 때만 함께 사용할 수 있다. 실행하기 전의 레지스터 값을 지정한다.
--entry <entryname>
이 옵션은 -x 옵션이 사용될 때만 함께 사용할 수 있다. 실행할 entry 이름을 지정한다.
--save-punch
PUNCH 레코드 정보에 대한 출력 파일을 생성한다.
--enable-spm
Structured programming 매크로를 허용한다.
--license
라이선스 정보를 출력한다.
--force-rmode31
대상 프로그램의 오브젝트 코드는 31비트 RMODE가 강제 적용된다.
--no-reuse
대상 프로그램은 OpenFrame ASM에 로드될 때마다 프로그램 인스턴스가 새로 생성된다.
--sysparm <string>
대상 프로그램에 대해 전처리 시 사용되는 &SYSPARM의 값을 지정한다.
--enable-outdated
대상 프로그램에 대해 과거 버전의 명령어를 사용하도록 설정한다. 대상 명령어는 --list 옵션을 사용했을 때 출력되는 outdated instruction 을 참고한다.
--amode <24,31,ANY>
컴파일 시 사용할 Address Mode 를 지정한다. 이 값은 대상 파일에 정의된 AMODE 값을 덮어씌운다.
--rmode <24,31,ANY>
컴파일 시 사용할 Residence Mode 를 지정한다. 이 값은 대상 파일에 정의된 RMODE 값을 덮어씌운다.
2. 인터페이스 모듈 생성
OpenFrame ASM을 설치한 후 ofasmif 명령어를 사용하여 인터페이스 모듈을 생성하는 방법에 대한 설명이다.
-
$OFASM_HOME의 다음 위치에서 JSON 샘플을 확인한다.
$OFASM_HOME/sample
-
ADD.json을 가지고 인터페이스 모듈을 생성한다.
ofasmif -i ADD.json
-
인터페이스 모듈인 ADD_OFASM_VM_ENTRY.cpp 및 so 파일이 생성된 것을 확인할 수 있다.
ADD_OFASM_VM_ENTRY.cpp
2.1. ofasmif 명령어
다음은 OpenFrame ASM에서 제공하는 ofasmif 명령어의 사용 방법이다.
ofasmif [명령 옵션...]
-
명령 옵션
다음은 소스 파일을 컴파일하는 기본 명령어 옵션에 대한 설명이다.
옵션 설명 -i <파일이름>
입력 파일을 설정한다. cpp 파일을 생성하고 g++로 컴파일을 수행한다. 파일의 확장자가 'json’으로 되어야 인터페이스 명세 파일로 인식한다.
--cpp-only
cpp 파일만 생성한다. -i 옵션과 함께 사용해야 한다.
--comp-only
cpp 파일을 g++로 컴파일한다. -i 옵션과 함께 사용해야 한다.
-g <인터페이스 타입>
생성할 JSON 파일의 인터페이스 타입을 지정한다.
-n <프로그램 이름>
프로그램 이름으로 사용될 JSON 파일 이름을 지정한다. -g 옵션과 함께 사용해야 한다.
-e <엔트리 이름>
생성할 JSON 파일의 엔트리명을 지정한다. -g 옵션과 함께 사용해야 하며 생략될 경우 프로그램 이름이 엔트리 이름으로 사용된다.
-t <파라미터 타입>
파라미터 타입(V, F, PCB, JCL)을 지정한다. -e 옵션과 함께 사용해야 한다.
-m <파라미터 개수>
파라미터의 최대 개수를 지정한다. -t V(가변 파라미터)일 경우 사용한다.
-s <사이즈 리스트>
파라미터의 사이즈 리스트를 지정한다. -t F(고정 파라미터)일 경우 사용한다.
--ptr-offset <포인터 파라미터 오프셋 리스트>
-t F(고정 파라미터)이고 포인터 파라미터가 존재하는 경우 포인터 파라미터의 오프셋 리스트를 지정한다. --ptr-size 옵션과 함께 사용해야 하며 리스트의 배열이 동일해야 한다.
--ptr-size <포인터 파라미터 사이즈 리스트>
-t F(고정 파라미터)이고 포인터 파라미터가 존재하는 경우 포인터 파라미터의 사이즈 리스트를 지정한다. --ptr-offset 옵션과 함께 사용해야 하며 리스트의 배열이 동일해야 한다.
-p <파일이름>
입력 파일의 단락을 자동으로 맞춘다.
-h(H)
도움말을 출력한다.
인터페이스 생성 예시
다음은 ofasmif -g 옵션을 사용하여 다양한 인터페이스를 파라미터 타입 별로 생성하는 예시이다.
-
기본적인 가변 파라미터 엔트리 인터페이스를 생성한다. 파라미터는 최대 10개까지 지정할 수 있다.
ofasmif -g entry -n TEST -e TEST
-
가변 파라미터 ENTRY 인터페이스를 생성한다. 파라미터 최대 개수를 지정해야 한다.
ofasmif -g entry -n TEST -e TEST -t V -m 10
-
고정 파라미터 ENTRY 인터페이스를 생성한다. 포인터 파라미터가 없는 경우에 대한 예시이다.
ofasmif -g entry -n TEST -e TEST -t F -s 100,200,300
-
고정 파라미터 ENTRY 인터페이스를 생성한다. 포인터 파라미터가 있는 경우에 대한 예시이다.
ofasmif -g entry -n TEST -e TEST -t F -s 100,14,24 --ptr-offset “[(),(0,4),(4,8)]” --ptr-size “[(),(100,200),(200,300)]”
-
PCB 파라미터 ENTRY 인터페이스를 생성한다. 최대 PCB 파라미터 개수를 지정한다.
ofasmif -g entry -n TEST -e TEST -t PCB -m 100
-
JCL 파라미터 ENTRY 인터페이스를 생성한다.
ofasmif -g entry -n TEST -e TEST -t JCL
-
EXIT 인터페이스를 생성한다. 포인터 파라미터가 없는 경우에 대한 예시이다.
ofasmif -g exit -n TEST -e TEST -m 10
-
EXIT 인터페이스를 생성한다. 포인터 파라미터가 있는 경우에 대한 예시이다.
ofasmif -g exit -n TEST -e TEST -t F -s 100,14,24 --ptr-offset “[(),(0,4),(4,8)]” --ptr-size “[(),(100,200),(200,300)]”
-
LOAD 인터페이스를 생성한다. 고정 파라미터 ENTRY 인터페이스 생성 방법과 동일하다.
ofasmif -g exit -n TEST -e TEST -t F -s 1024
-
ENTRY가 여러 개일 경우에 대한 인터페이스 생성 예시이다.
ofasmif -g entry -n TEST -e ENTRY_1 -t F -s 100,200 -e ENTRY_2 -t V -m 10