소개글
C++을 사용한 어셈블리 코드 인터프리터입니다.
직접 커맨드라인에서 어셈블리 코드를 입력하여 실행 결과를 보는 in-line 모드와
어셈블리 코드 스크립트를 작성하여 프로그램에 interpreting 시키는 모드가 존재합니다.
그 외 , interpreting 모드에서 한 단계씩 값을 보는 step-by-step 모드도 있습니다.
이 프로그램에서는 기본 레지스터인 AC , IR , PC , MAR , MBR 외에 ,
EAX , EBX , ECX ..... EKX 까지의 추가 레지스터를 지원합니다.
#이 붙는 전처리 명령어를 사용하여 , 사용할 메모리 영역의 크기를 마음대로 설정할 수 있습니다.
지원하는 어셈블리 명령어는
mov , add , load , mpy , div , sub , push , pop , store , mod , pow , inc , dec , jne
를 지원합니다.
레이블을 달아 , jne를 이용하여 루프도 돌릴 수 있습니다.
※ Asembly interpreter에서 실행 가능한 샘플 어셈블리 : 구구단 프로그램
#echo -= Assembly GUGUDAN program =-
#echo for assembly simulator
#pause
#defdata a1 a100
#defcode a200 a1000
#org a200
mov eax , 9
mov ebx , 8
mov a1 , 0
mov a10 , 1
outer:mov a5 , 0
inc a10
#echo -----------------------
#echo start of
#disp 10 10
#echo dan
#echo -----------------------
inner:mov a5 , 0
inc a1
mov a3 , a1
mpy a3 , a10
#disp 3 3
#pause
mov ekx , a1
jne inner , eax
mov a1 , 0
mov ekx , a10
jne outer , ebx
컴파일 실행환경
CentOS 5.3 / g++ 4.1.2
압축파일 내 파일목록
Boundary.cpp
Boundary.h
Common.h
Control.cpp
Control.h
FileHandler.cpp
FileHandler.h
Helper.cpp
Helper.h
Main.cpp
Memory.cpp
Memory.h
Msg.cpp
Msg.h
Operand.cpp
Operand.h
Stack.cpp
Stack.h
Syntax.cpp
Syntax.h
Test1_basic.asms
Test2_additional.asms
Test3_additional.asms
Ui.cpp
Ui.h
fibonacci.asms
greetings.asms
gugudan.asms
interpreter
samplecomputer.asms
test.asms
참고 자료
컴퓨터구조론.
열혈강의 C++ 프로그래밍
more effective C++