1 minute read

  • store는 register(8byte 단위) -> memory이기 때문에, memory는 연속된 공간이기 때문에 … ?
  • 따라서 store는 u가 붙지 않는다.
  • ldu는 있을까? -> x
  • Register format: 피연산자가 3개 있는 포맷

2.6 논리 연산자

  • shift left logical의 뜻은 왼쪽으로 한 칸씩 이동하고 오른쪽 빈 자리를 0으로 채워라.

Shift Operations

  • shift는 곱셈과 같기 때문에 자주 나온다.
  • 1011(11) -> 10110(22)

  • load나 store할

And Operatinos

  • 해당하는 비트에서 and 연산을 하여 그 자리에 쓴다.
  • and x9, x10, x11 : x10과 x11의 and 연산 결과를 x9에 대입한다.
  • 16진수 한 자리가 2진수 4개의 비트다.
  • oxffff = 1111 1111 1111 1111

Or Operations

  • or x9, x10, x11 :
  • Bitwise AND와 Logical AND는 어떤 차이가 있는가?
int a, b, c;

a = 2; // ...010
b = 3; // ...011

c = a & b; // ...010 = 2 - Bitwise
d = a && b; // T & T = T = 1 - Logical

printf(c, d)

XOR Operations

  • A xor 1 = ~A
  • 0 xor 1 = 1
  • 1 xor 1 = 0

Conditional Operations

  • 프로그래밍에서 분기가 많이 나온다.
  • go to를 사용하지 마라.
  • 조건문, 반복문을 이용해라.
  • Branch는 조건문이나 반복문을 이용하는 실체다.
  • beq: Brand on equal
  • beq rs1, rs2, L1 : rs1과 rs2가 일치하면 L1에 있는 instruction을 실행한다.

Compileing If Statements

if ( i == j ) f = g + h;
else f = g - h;

// f : x19, g : x20, h : x21, i : x22, j : x23

        bne x22, x23, Else
        add x19, x20, x21
        beq x0, x0, Exit
Else:   sub x19, x20, x21
Exit: ...

Tags:

Categories: ,

Updated: