본문 바로가기

컴퓨터 구조론( MIPS )

명령어 : 컴퓨터 언어 3

728x90
반응형

 

반응형

안녕하세요. WH 입니다.

지난 번 글까지해서 산술 연산자에 대한 내용까지 알아보았는데요,

내용이 기억나지 않으시면 아래 글을 참조하시길 바랍니다.

2022.02.07 - [컴퓨터 구조론( MIPS )] - 명령어 : 컴퓨터 언어 1

 

명령어 : 컴퓨터 언어 1

안녕하세요. WH입니다. 적은 분들이지만, 제 글을 읽어주시는 분들이 생겨났네요. 정기적으로 찾아오시는 분들은 아니지만, 그 적은 분들을 위해서라도 열심히 꾸준히 써보겠습니다. 오늘은 명

developer-wh.tistory.com

2022.02.07 - [컴퓨터 구조론( MIPS )] - 명령어 : 컴퓨터 언어 2

 

명령어 : 컴퓨터 언어 2

안녕하세요. WH 입니다. 지난 글에 이어서 다시 정리해보도록 할게요 지난 글 내용이 기억나지 않으신다면, 아래 내용을 참조해주세요 2022.02.07 - [컴퓨터 구조론( MIPS )] - 명령어 : 컴퓨터 언어 1

developer-wh.tistory.com

논리연산 명령어

논리 연산은 무엇때문에 필요할까요? 비트를 워드 단위로 묶는다( packing )거나, 워드를 비트 단위로 풀때( unpacking ) 주로 사용합니다. 뭐 2의 배수에 대한 곱하기나 나누기에 활용되기도 하지요.

 

$s0 에 8이 있다고 합시다.

 

0000 0000 0000 0000 0000 0000 0000 1000 이런 값이 말이죠

 

sll $t0, $s0, 4 라는 연산을 수행하면

 

0000 0000 0000 0000 0000 0000 1000 0000 ( = 128 )이 된답니다. 이 값은 $t0라는 레지스터에 저장 되겠죠.

 

기계어 형식은 다음과 같습니다.

    op        rs         rt        rd       shamt     funct

    0          0         16        8          4          0

저번 글에서 미뤘던 shamot ( shift amount )를 나타내며 자리 이동 명령어에서 사용 됩니다. 또한 x만큼의 shift left 는 2^x을 뜻한답니다. 즉 곱하기 right는 나누기를 뜻하게 되겠지요.

 

논리 연산자 MIPS instructions
Shift left sll
Shift right srl
bit by bit AND and, andi
bit-by-bit OR or, ori
bit-by-bit NOT  nor ( nor에 피연산자 0을 붙임으로써 not 구현 )

 

AND

 

AND 는 어떤 비트 패턴에서 0 위치에 해당하는 비트들을 강제로 0으로 만드는 데 사용할 수 있는데, 일부 비트를 감추는 역할을 하기 때문에 마스크라고 부르기도 한답니다. 또한 상수가 논리연산자에서도 유용하기 때문에 andi 가 구현되어 있습니다.

 

OR

 

OR은 어떤 비트 패턴에서 두개의 피연사자 중 하나의 해당 비트가 1이면 결과치가 1로 바뀌는 논리 연산을 뜻합니다.

상수는 산술 연산에서 뿐만아니라 논리연산에서도 유용하기 때문에 ori 라는 연산자가 구현되어 있습니다.

NOR

 

피연산자 두개, 두 피 연산자를 OR한 값을 다시 NOT하는 비트 대 비트 논리 연산인데요. 피연산자 하나를 받아서 피연사자의 비트가 1이면 결과로 0을 0이면 결과를 1로 만듭니다. 또한 NOT 연산을 구현할 수 있는데요

NOR 0 = NOT ( A or 0 ) = NOT( A )가 된답니다. nor 연산은 주로 not 연산을 구현하는데 사용되기 때문에, 상수 피연산자를 사용하는 명령어가 따로 존재하지 않습니다.

 

참고 andi ori

andi나 ori를 사용하여 16비트에 0을 삽입하여 32비트 상수를 만들 수 있답니다.

 

이번 글은 조금 짧습니다만, 짧게 쓴 이유가 있습니다. 다음 다룰 내용이

분기와 관련된 내용인데 해당 내용이 길어질 것 같아 잘랐습니다.

읽어주셔서 감사합니다. 다음글도 찾아봐주세요!

728x90
반응형