전체 글 139

ARM 명령어 및 역할

ARM -ARM 명령어는 전형적으로 2개의 소스레지스터 Rn,Rm 과 하나의 결과 레지스터인 Rd를 가짐 -Rm은 ALU로 입력 되기 전에 배럴시프터를 거쳐 미리 선처리 작업을 할 수 있다. -ARM 레지스터들은 한번에 최대 18개까지 활성화 할 수 있다. -r0~r15까지의 데이터 레지스터 16개와 cpsr , spsr 프로그램 상태 레지스터 -ARM 프로세서는 특별한 작업이나 특수한 기능을 수행하기 위한 3개의 레지스터(r13~r15) -cpsr : 32비트 이며 현재 상태를 저장하는 레지스터 이다. 8비트씩 플래그, 상태, 확장, 제어 로 나누워져 있다.(상태와 확장은 현재 예약 상태이다) -abort 모드 : 메모리 액세스 실패 시 발생하는 모드 - FlQ 와 IRQ 모드 : 2가지 인터럽트 레벨..

Hard Ware/ARM 2012.05.17

ARM에 관련한 용어들

폰노이만 방식 : 데이터 와 명령어가 같은 버스를 공유하고 있는 형태이다 . 하버드 방식 : 데이터 버스와 명령어용 버스가 분리 되어 있는 형태이다. 명령어 디코더 : 명령어가 실행되기 전에 명령어를 해독하는 역할 로드 - 스토어 아키텍쳐 로드란 : 메모리에서 레지스터로 읽어오는 과정 스토어 란 : 레지스터에서 메모리로 저장하는 과정

Hard Ware/ARM 2012.05.16

트리에서 전위순회, 중위순회, 하위순회

#include #include typedef struct Node { struct Node *Left; struct Node *Right; char Data; }Node; Node * MakeTree(char Data); void deleteTree(Node * Data); void DestroyTree(Node * Data); void ConnectTree(Node * Data); void PreorderPrint(Node *Data); void InorderPirnt(Node *Data); void PostPrint(Node *Data); int main() { Node * A = MakeTree('A'); Node * B = MakeTree('B'); Node * C = MakeTree('C');..

- 트리 - LCRS 원하는 높이 부분만 출력

#include #include typedef char ElementType; typedef struct LCRSNode { struct LCRSNode * LeftChild; struct LCRSNode * RightSibling; ElementType Data; }LCRSNode; LCRSNode* LCRS_CreateNode(ElementType NewData); void LCRS_DestroyNode( LCRSNode* Node ); void LCRS_DestroyTree( LCRSNode* Root ); void LCRS_AddChildNode( LCRSNode * Parent, LCRSNode * Child); void LCRS_PrintTree( LCRSNode * Node, int Dept..

유클리드 호제법을 이용한 최대공약수 구하기

#include int main() { int Data = 0; int Data1 = 0; int m = 0; int n = 0; int result = 0; printf("Data input : "); scanf("%d %d",&Data,&Data1); m = Data; n = Data1; do{ result = m % n; m = n; n = result; }while(result != 0); printf("Data : %d\n",m); return 0; } 기존의 두 데이터 값을 나머지 연산자를 이용하여 나머지를 구합니다. 그다음 기존의 데이터2가 1으로 이동하고 나머지값이 데이터 2로 이동합니다. 이처럼 나머지가 0이 나오면 나눈 인자값이 최대공약수가 됩니다 ㅎㅎ

중위 순위를 후위순위로 바꾸는 소스입니다

#include #include #include enum {FALSE=0,TRUE}; typedef struct Operation_Stack { char Data; struct Operation_Stack * beforeStack; }Operation_Stack; typedef struct Number_Stack { char Data; struct Number_Stack * NextStack; }Number_Stack; typedef struct Top { struct Operation_Stack * OperationTop; struct Number_Stack * NumberHead; }Top; void OperationPop(Top ** top); int NumberPush(Top ** top, cha..