4073
2016-06-24 20:06:46
0
분명히 용어들은 하나도 빠짐없이 전부 내가 잘 아는 용어들 맞는데..
근데 왜 질문 내용이 하나도 이해가 안되는거지.. ㅠㅠ
일단 C로 회로를 만든다는게.. 회로는 하드웨어적인 부분을 말하시는거 맞죠?
HDL 같은 논리회로 설계용 언어 대신 C를 쓴다는 말씀이신건지. 이걸 의미하신게 맞다면..
그거야 당연히 언어는 HDL 같은거 대신에 C를 사용해서도 어떻게든 원하는걸 description 하도록 API 같은걸 적당히 정의하고,
그걸 하드웨어적으로 일종의 컴파일 같은 과정을 거쳐서 FPGA 같은곳에 써넣도록 만들어내기만 한다면 가능하긴 하겠죠.
근데 왜 그렇게 해야 하는지, 어떤 메리트를 주장할 수 있을지가 더 큰 문제일듯도..
그리고 어셈블러를 파싱할때 fsm을 쓴다는건..
일단 fsm 형태로 만든다는건, 해당 프로그램의 동작중에 일어날수 있는 상태(finite state)와 이벤트들을 정의한 뒤에
어떤 특정 state에서 특정 event를 받아서 state transition이 일어나는 동안에 동작하는 function들로 프로그램을 기술하는걸 말하는데요.
컴파일러의 동작은 기본적으로 어떤 특정 언어로 씌여진 코드를 파싱해서 다른 형태로 만드는건데, 이 파싱 동작은 해당 코드에서 토큰들을 떼어내서 파싱 상태에 맞게 해석하는 것으로 볼 수 있죠. 파싱 상태에 맞게 해석한다는게.. 예를들어서 똑같은 코드 abc가 들어와도, 어떤 경우엔 이걸 변수명으로 볼수도 있고, 또 어떤 경우에는 이걸 문자열 데이터로 볼수도 있잖아요. 이건 코드를 앞에서부터 해석해나가면서 문맥에 맞는 쪽으로 보고 처리해야 하는거고, 이 문맥을 fsm에서의 state로 볼수 있죠. 이런식으로 정의하면 컴파일러의 동작을 fsm 형태로서 정의하고, 구현할수 있게 되겠죠.