공부/컴퓨터
[시스템 프로그램 - 수업 ] [ SVM의 예제 ]
찬
2004. 3. 30. 09:34
반응형
시스템 프로그램 바이너리 화일
( 중간에 공백은 무시. )
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;
}
=============================================================================
( 중간에 공백은 무시. )
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;
}
=============================================================================
반응형