앞의 글을 읽으시면 이해에 도움이 됩니다.
2022.10.01 - [Computer Science/컴퓨터 구조] - [컴퓨터 구조] Type of Instruction (명령어의 타입)
[컴퓨터 구조] Type of Instruction (명령어의 타입)
앞의 글을 읽으시면 이해에 도움이 됩니다. 2022.10.01 - [Computer Science/컴퓨터 구조] - [컴퓨터 구조] RISC-V 명령어 작동 과정 (RISC-V Instruction Operation Process) [컴퓨터 구조] RISC-V 명령어 작동..
hi-guten-tag.tistory.com
2022.10.21 - [Computer Science/컴퓨터 구조] - [컴퓨터 구조] Procedure call, jal, jalr (프로시저 콜을 위한 명령어들)
[컴퓨터 구조] Procedure call, jal, jalr (프로시저 콜을 위한 명령어들)
앞의 글을 읽으시면 이해에 도움이 됩니다. 2022.10.01 - [Computer Science/컴퓨터 구조] - [컴퓨터 구조] Type of Instruction (명령어의 타입) [컴퓨터 구조] Type of Instruction (명령어의 타입) 앞의 글을..
hi-guten-tag.tistory.com
1. lui
우리는 지금 32bit architecture기 때문에, 하나의 register의 크기는 32bit입니다
그렇다면 unsigned라는 가정하에
아무리 생각해도 addi 말고는 답이 없어 보이네요..
다만 문제점은 addi는 imm에 해당하는 bit가 12개기 때문에,
덧셈을 위해서는 addi를 계속해서 더함으로써 32bit 숫자를 표현해야겠네요
아무리 생각해도 비효율적인 것 같습니다.
그렇기 때문에 RISC-V에서는 lui(load upper immediate. U-type) 명령어를 제공합니다.
lui는 opcode : 7bit, rd : 5bit를 제외하고 남은 20bit를 immediate를 위해 사용합니다.
또한 이 명령어는 imme에 해당하는 20bit를 상위 20bit에 위치시킵니다.
즉 rd의 31번째부터 12번째까지 위치시킵니다.
그리고 최종적으로 남은 12bit는 0으로 채웁니다.
그렇게 된다면 이제 addi로 덧셈만 해주면 쉽게 32bit 숫자를 표현할 수 있겠네요!
이를 그림으로 보면 아래와 같습니다.

위의 숫자를 만들어봅시다. 음. . .. . 3,998,976이라네요. 정확한지는 잘 모르겠는데 아무튼 확실한 건


쉽게 이해되시죠?
사실 addi 말고도 ori 명령어도 가능합니다.
해당 명령어 덕분에 레지스터 주소나 값이 길어도 처리할 수 있게 되었습니다.
그렇다면 주소는 어떻게 해결할까요?
2. 32-bit address
운영체제를 하시면 알겠지만, 32bit architecture에서 cpu가 볼 수 있는 메모리는 최대 4GB입니다.
그런데 앞 글에서 다룬 jal과 jalr을 이용해서 32bit의 공간을 왔다 갔다 할 수 있을까요?
jal은 opcode, register을 제외하고 남은 20bit를 이용해서 움직이는데, 끝에 0이 함축되어 있기 때문에 사실상 21bit를 사용하므로 최대 PC 기준으로
jalr은 opcode, register, imm을 제외하고 남은 12bit를 이용해서 움직이는데, 위와 마찬가지로 사실상 13bit를 사용합니다.
확실히
그렇기 때문에 여기서도 lui 명령어를 사용합니다.
lui를 통해 상위 20bit에 address를 저장하고, jalr을 통해 하위 12bit를 더하고 jump를 합니다.
따라서 전체 메모리를 참조할 수 있습니다.
간단하죠?
그렇기 때문에 jalr이 필요한 것입니다.
다음 글에서는 Procedure Call에 대해 더욱 자세히 적도록 하겠습니다.
(stack pointer, frame pointer, caller saved reg, callee saved reg)
2022.10.22 - [Computer Science/컴퓨터 구조] - [컴퓨터 구조] Procedure Call
[컴퓨터 구조] Procedure Call
앞의 글을 읽으시면 이해에 도움이 됩니다. 2022.10.21 - [Computer Science/컴퓨터 구조] - [컴퓨터 구조] Procedure call, jal, jalr (프로시저 콜을 위한 명령어들) [컴퓨터 구조] Procedure call, jal, jalr (..
hi-guten-tag.tistory.com
감사합니다.
지적 환영합니다.
'Computer Science > 컴퓨터 구조' 카테고리의 다른 글
[컴퓨터 구조] RISC-V Addressing Mode Summary (6) | 2022.10.22 |
---|---|
[컴퓨터 구조] Procedure Call (2) | 2022.10.22 |
[컴퓨터 구조] Procedure call, jal, jalr (프로시저 콜을 위한 명령어들) (2) | 2022.10.21 |
[컴퓨터 구조] Decision Instruction (4) | 2022.10.21 |
[컴퓨터 구조] Type of Instruction (명령어의 타입) (2) | 2022.10.01 |