[컴퓨터구조] 분기 명령어 jr, j, jal, beq, bne

뚱땅코딩·2023년 3월 15일
0

컴퓨터구조

목록 보기
15/15
post-custom-banner

* a program = a sequence of instructions

명령어들은 순서대로 실행된다. (분기 명령어 제외)


** 분기 명령어 (branch instructions) 란?

-> 프로그램의 control flow를 바꾸는 명령어이다. 반복문, 조건문 등에서 필요하다.

*** Label 이란?

-> 어셈블리어에서 명령어 주소의 별명

**** PC 란?

  • PC (program counter) : 레지스터로, 현재 실행 중인 명령어의 주소가 저장된다.
    메모리 주소가 4씩 증가하므로, PC 또한 다음 명령어가 실행될 때마다 4씩 증가한다.
    branch 명령어는 PC의 값을 강제로 다른 값으로 바꿔준다.

1. jr (jump register) / R format


2. j (jump) / J format




4. beq (branch equal) / I format

bne (branch not equal) / I format

  • j Exit이 없으면 다음 명령어인 Else를 실행하게 돼서 의도대로 흘러가지 않게 됨

  • 4를 곱한다는 것은 맨 끝 두 자리를 0으로 채워주는 것

  • 앞자리는 sign extension 해 줌

  • PC (현재 수행 중인 명령어 주소) 를 더하는 이유는 BTA가 현재 위치와 가깝고, 상대적이기 때문에 현재 수행하는 명령어 주소에 offset을 더하는 것이다.

  • 뒤로 branch 할 수도 있고, 앞으로 할 수도 있어서 imm 필드가 음수와 양수 모두 가능한 것이다.

post-custom-banner

0개의 댓글