반응형
시스템 프로그램 바이너리 화일
( 중간에 공백은 무시. )
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;
}
=============================================================================
반응형
'공부 > 컴퓨터' 카테고리의 다른 글
[공학 프로그래밍] 달팽이 모양으로 배열에 숫자 채우기. (0) | 2004.04.03 |
---|---|
아직 덜 정리된 자주 가는 사이트들. (0) | 2004.04.02 |
expect 사용하기. (0) | 2004.03.30 |
공학 프로그래밍 10진수를 입력 받아 2진수를 출력 (0) | 2004.03.29 |
P4P 800 에서 사운드 카드 잡기 (0) | 2004.03.27 |