[re] runtime assembler.....

조회 수 7455 추천 수 127 2002.09.14 02:10:29
^_^; 전 3D 엔진 코어쪽이나 asm 은 잘 알지 못하기 때문에 자세하게 설명을 해 드릴 수 없군요.

간단하게 일단 예제에서 .asm 파일을 한번 수정해 보시고 실행해 보시길 바랍니다. .asm파일을 수정하면 실행결과도 달라집니다. 즉, 프로그램이 실행될 때 .asm이 컴파일되고 로드된다는 것입니다. 함수를 실행할때마다 컴파일한다는 것이 아니라, 게임이 실행되고 게임을 초기화 할때 최적화 함수를 생성시킨다는 것입니다.  즉, raster 함수가 생성되는 시기는 프로그램이 cpu와 그래픽 카드를 체크한 후입니다. 물론 게임 진행중에는 다시 컴파일할 필요가 없죠.
이것은 상당히 많은 유연성을 제공합니다.

1) 가장 큰 장점은 무엇보다도 개발단계에서 테스트가 편리하다는 것입니다. 프로그램을 컴파일하지 않고도 .asm 만을 수정하는 것만으로도 테스트가 가능기 때문에 최적화를 요하는 부분만을 .asm 으로 작성하고 이 .asm 을 바꿔가면서 테스트하면 됩니다.  만약에 최적화된 새로운 함수를 만들려고 햇을때, cpu만 하더라도 mmx, sse, non simd  에서의 코딩을 따로 해야 되고 테스트 작업이 번거로울 수 밖에 없습니다. 하지만 runtime asm 에서는 단지 .asm 파일만 수정하면서 테스트하면 되니까 편리하죠.
이 부분에 대해서는 의문이 없으시죠?

2) 물론 SIMD 명령어 처리에 있어서는 DLL이나 LIB와 그다지 차이가 없을 것입니다. 하지만 flipcode에서 말한것처럼 mispredicted 분기는 병목을 일으키며(루프내부에서의 jump), 이런 조건을 유연성으로 어느정도 커버할 수 있으리라고 생각합니다. 가령 DLL 에서는 변수로 처리할 수 밖에 없는 것이 상수로 처리하는 것이 가능하고 조건에 대해서도 더 명확해집니다.  실제로 실행시간에 모든 조건을 체크해서 실행코드를 생성하니 코드가 명확해집니다.

가장 무식한 예일이지 모르겠지만, 가령 사용자가 화면의 크기를 조정할 수 있는 2차원 미니 게임(per pixel 횟수가 작은-_-;) 이 있다고 할때 이 화면전체를 layer1에 layer2에 블랜딩한다면 화면 크기를 조정할 때 새로운 raster 함수를 생성시킬 수 있습니다. ( .asm 파일을 실행시간에 다시 만들어내고 컴파일해서 raster함수를 교체하는 것입니다. ). loop 를 풀수도 있고(^_^;), width를 알기 때문에 index 계산도 명확합니다. 그리고 귀찮아서 inline으로 하기 싫었던 것도 쉽게 실행시간에 구현이 가능해집니다.


고급 프로그래머에게 제가 이렇게 얘기드리는게 좀 우습네요. 저는 그냥 가장 참신했던 아이디어 같아서 얘기드린건데.. 의심과 의문의 눈초리로 보시니 몸들바를 ^_^;  정말로 전 이 분야에 있어서는 초보입니다. 잘못된 부분은 잘 여과해서 읽기 바랍니다.
그래도 어셈은 고등학교때부터 했었는데, 8088 때만 하고 나중엔 손도 안되었더니 정말 많은 요즘 instruction에 질립니다.
파일 첨부

여기에 파일을 끌어 놓거나 파일 첨부 버튼을 클릭하세요.

파일 크기 제한 : 0MB (허용 확장자 : *.*)

0개 첨부 됨 ( / )
List of Articles
번호 제목 글쓴이 날짜sort 조회 수
43 [re] [질문] 게임 [1] 여치 2003-07-08 9824
42 [re] [질문] 게임 [2] hongiro 2003-07-08 6645
41 오랜만에 질문 하나 드립니다~ 풍이 2003-08-07 7075
40 [re] 오랜만에 질문 하나 드립니다~ [1] 여치 2003-08-08 7199
39 엔진 버전업에 관해 [1] 답게 2003-08-26 8198
38 [re] 엔진 버전업에 관해 [1] 여치 2003-08-28 6491
37 [질문]열혈피구 [5] hongiro 2003-09-03 6558
36 컴과 내 인생 여치 2003-09-24 5083
35 버텍스버퍼에 캐시를 사용한다는 말이 무슨말인지.. ario 2003-10-28 5750
34 [re] 버텍스버퍼에 캐시를 사용한다는 말이 무슨말인지.. [3] 여치 2003-10-30 6106
33 캐쉬 적중률 어떻게 측정해요?? ... 2003-11-06 6218
32 [re] 캐쉬 적중률 어떻게 측정해요?? file 여치 2003-11-06 5099
31 엔진 제작기간은? 답게 2003-12-08 7551
30 [re] 엔진 제작기간은? 여치 2003-12-09 6021
29 HTTP 에서 응답메세지중에 본문의 크기에 대한 부분이 나오지를 않습니다. [5] 바하무트 2004-03-23 8491
28 [질문]HeightField에서 LOD는 안쓰시나요? [5] clever98 2004-05-05 4748
27 [re] [질문]HeightField에서 LOD는 안쓰시나요? 여치 2004-05-05 6931
26 [re] [질문]HeightField에서 LOD는 안쓰시나요? [6] protian 2004-06-10 7706
25 ss3d 엔진에 대한 질문 Guest 2004-06-13 5410
24 [re] ss3d 엔진에 대한 질문 [2] 여치 2004-06-13 6159



XE Login

天安門大屠殺 六四天安門事件 反右派鬥爭 大躍進政策 文化大革命 六四天安門事件 The Tiananmen Square protests of 1989 天安門大屠殺 The Tiananmen Square Massacre 反右派鬥爭 The Anti-Rightist Struggle 大躍進政策 The Great Leap Forward 文化大革命 The Great Proletarian Cultural Revolution 人權 Human Rights 民運 Democratization 自由 Freedom 獨立 Independence 多黨制 Multi-party system 民主 言論 思想 反共 反革命 抗議 運動 騷亂 暴亂 騷擾 擾亂 抗暴 平反 維權 示威游行 法輪功 Falun Dafa 李洪志 法輪大法 大法弟子 強制斷種 強制堕胎 民族淨化 人體實驗 胡耀邦 趙紫陽 魏京生 王丹 還政於民 和平演變 激流中國 北京之春 大紀元時報 九評論共産黨 獨裁 專制 壓制 統一 監視 鎮壓 迫害 侵略 掠奪 破壞 拷問 屠殺 肅清 活摘器官 障テ社會 誘拐 買賣人口 遊進 走私 毒品 賣淫 春畫 賭博 六合彩 台灣 臺灣 Taiwan Formosa 中華民國 Republic of China 西藏 土伯特 唐古特 Tibet 達償ワ喇嘛 Dalai Lama 新疆維吾爾自治區 The Xinjiang Uyghur Autonomous Region free tibet