본문 바로가기

return address3

[Computer Architecture] (5) RISC-V Procedure Call 이번에 알아볼 내용은 Procedure Call이다.  코드 내에서 다른 함수를 호출하여 사용하는 경우를 말한다. 일반적으로 함수는 Input과 Output으로 구성되어 있다. 따라서 함수를 호출하여 사용할 경우, Input을 전달해야 하며, 또한 Output을 전달받아야 한다. 앞서 RISC-V의 Register를 살펴보았을 때, Function Argument와 Return value를 위한 Register가 정해져 있었다. 2024.04.27 - [IT_Study/CS_Study] - [Computer Architecture] (4-2) RISC-V Register 설명 [Computer Architecture] (4-2) RISC-V Register 설명각 Register의 기능을 소개하기 앞서,.. 2024. 4. 28.
[Computer Architecture] (4-5) RISC-V Control Transfer Operation Control Transfer Operation은 특정 조건에 따라 동작이 달라지는 것을 말한다. 대표적으로 Branch 동작이 있다. Branch 동작은 특정조건이 만족되면 지정된 위치로 이동하고, 만족되지 않으면 다음 Instruction을 수행하도록 한다.아래와 같이 조건에 따라 L1의 위치로 갈지 말지를 결정할 수 있다.// branch equalbeq rs1, rs2, L1 # if(rs1 == rs2) goto L1// branch not equalbne rs1, rs2, L1 # if(rs1 != rs2) goto L1 C 언어에서 조건문은 if, while, for 문 등이 존재한다. 이 중 if문을 사용한 코드를 Instruction으로 변경해 보자. // C codeif (i == j).. 2024. 4. 28.
[Computer Architecture] (4-2) RISC-V Register 설명 각 Register의 기능을 소개하기 앞서, "Caller saved" register와 "Callee saved" register를 알아보자.Caller는 Call를 수행하는 주체이며, Callee는 Call를 당하는 주체를 이야기한다. 예를 들어 Main에서 function foo()를 부르게 되면 Caller는 Main, Callee는 foo()가 된다. 그런데 동작을 수행할 때, Caller와 Callee 모두 Register를 사용한다. 그런데 사용할 수 있는 Register는 32개로 한정적이기 때문에 문제가 발생한다. 이를 Register saving problem이라 한다. 이 문제는 Caller가 사용 중이던 Register들을 Callee가 사용하게 되면 기존에 저장되어 있는 데이터가 .. 2024. 4. 27.