본문 바로가기

공부/컴퓨터

[시스템 프로그램 - 수업 ] [ SVM의 예제 ]

반응형
시스템 프로그램 바이너리 화일
( 중간에 공백은 무시. )

Exam0] 00A000 00A00A 8F4D20000FFE4372859A0B1 00A000
-----  ------ ------ ----------------------- ------
F_NAME  Start  End    BINARY(6byte -> 1 Ins) First
         Address                             Address


시작 주소 부터 끝 주소까지 Binary를 메모리에 시작 주소 부터 끝까지 적는다.
바이너리 화일을 2자리씩 끊으면 8F 가. 하나의 바이트로 변환된다.
그래서 총 2바이트씩 3번. 6byte를 이용하여서 3byte의 실제 바이너리 코드를
메모리에 로딩한다.


제일 마지막 코드와 끝 주소가 다르다면. 프로그램이 잘못 된것이다.


PC <- FirstAddress


==============================================================================

하나의 WORD 는 3byte 이다. ( 24 bit )

==============================================================================
Program :
1. Load to Memory
2. Execute the Program
   -> Fetch : IR <- [PC]
   -> PC <- PC + WORD
   -> Execute
   -> ( Check Interrupt 생략 )
=============================================================================
OPCODE  쪽에서 함수 포인터 사용하기.

void (*function[])() = { halt, add, addr , comp, compr .... };
( 만약 opcode에서의 파라미터가 다르다면 다른것을 만들어 주어야 한다. )

function[opcode]();
// 왠지 디자인 패턴에서 Command 패턴과 비슷한것 같다.
=============================================================================

자잔한 생각들.

while( fetch() && function[opcodes]() && sw.halt == 1 );

while   (1)
{
    fetch();
    opcode = opcode+WORD_SIZE;
    function[opcode]();
    if ( sw.halt == 1 ) exit;
}
=============================================================================
반응형