제어/전자HW설계

[전자HW설계] LAB3

KAU 2020. 9. 30. 17:44

FIND SUM

C에서는 while문을 사용하면 된다.

N0이 0이 아닐 때 까지 N을 더한다.

 

BUBBLE SORT

 

파트2는 sorting 즉 정렬을 할 겁니다.

 

시간적 복잡도

폴리노미얼 time에 풀 수 있으면 컴퓨터가 풀만한 문제

지수적으로 증가하는 형태이다==>컴퓨터가 풀기 어려운 문제

n^2만 해도 복잡하다.

descending order로 해라 

추가적인 메모리를 사용하지 말고 주어진 메모리만 사용해라

데이터들의 위치만 바꿔가면서 정렬을 해라

소팅 루틴 자체는 서브루틴이 필요 없다=>안쓰는 방향으로 설계하세요.

데이터가 들어있는 리스트는 워드 타입으로 되어있다.

32비트라서~

가장 먼저 오는 숫자는 원서의 갯수를 적어준다.

모니터 프로그램에서 메모리 탭을 열면 메모리 값을 볼 수 있다.

 

포인터는 주소값을 저장하는 변수입니다.

포인터를 선언할 때는 int *ptr

별표가 ptr이 포인터 타입이다 라는것을 알려주는것

포인터 변수에는 주소값이 들어가 있다.

주소값이 가리키는 데이터가 int 형태라는것

가리킬 대상이 되는 놈이 int라는것 

실제 int data가 있겠죠 

ptr=&data;

위와 아래는 의미가 같음

배열은 줄지어서 데이터들이 있다

데이터 형태도 같고 

사실상 배열의 이름은 배열의 처음을 가리키고 있는 주소값을 저장하고 있는것과 같다.

 

LIST +1;==> 다음 데이터를 가리키는것 

주소값으로는 4를 더해주는것

한번 돌면 0이 맨 뒤로 감

 

 

swap은 포인터 변수를 입력으로 받아서 

ptr[1]이랑 ptr[0]를 비교를 합니다.

뒤에것이 더 크면 바꿔치기를 한다.

리턴 1은 바꿨다는것을 알려줌 

 

flag를 or해서 한번이라도 스왑되면 플래그가 1이됨

++item_ptr

플래그가 0이되면 이제 바꿀 필요가 없기 때문에 끝내버린다.

 

--length ==>제일 작은놈은 맨뒤로 가니까 length를 줄임

0~9

0~8

~~이런식으로 줄여줌

 

재귀문을 사용해서 구현할겁니다.

스택이 중요해져요. 두번이상 구현할 때는 스택을 active하게 구현해야합니다.

스택을 이니셜라이즈 해두고

==>구현이 간단해집니다. 

스택을 헤비하게 사용하게 됩니다.

 

f(n)=f(n-1)+ ...

스탑 컨디션까지 계속~~

 

 

r4는 N이고 

r2는 F(N-1)

 

subi sp,sp,8 

stw r4, 0(sp)

stw ra, 4(sp)

 

ldw r4, 0(sp)

ldw ra, 4(sp)

addi sp,sp,8

처음에는 밑바닥을 가리키고 있다가 올라가는 형태로

ra는 대피를 시켜야 한다. 

r4도 대피를 시켜놔야 한다.

스택포인터 0과 4에 저장

 

일끝나면 

다시 ldw로 되돌리는거

 

함수 안에서 또 다른 함수를 부를 때는 그 전에 스택에 

공간을 확보하고 상태변수를 저장해둔다

특별히 중요한것은 ra다. function에서 작업할 때는 무조건 

저장해놔야한다.

 

상태변수들을 피난을 시키면서~

피보나치 수열 구현 

 

'제어 > 전자HW설계' 카테고리의 다른 글

Lab5  (0) 2020.10.14
Lab4  (0) 2020.10.12
[전자HW설계] LAB2  (0) 2020.09.22
[전자HW설계] 3-1 [Nios II 이론 마무리]  (0) 2020.09.14
[전자HW설계] 2-2  (0) 2020.09.10