[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 Multi Thread란... 여치 2002-10-11 7992
42 [필독] 프로그래밍, 신이 내린 최고의 노가다 [1] 베지타 2002-10-21 7862
41 [re] [질문]HeightField에서 LOD는 안쓰시나요? [6] protian 2004-06-10 7706
40 [re] 소켓 여치 2002-10-19 7629
39 NPC 길찾기 시스템과 맵구조에 대한 질문이에요 ^^ [2] 풍이 2003-06-03 7596
38 엔진 제작기간은? 답게 2003-12-08 7551
» [re] runtime assembler..... gg 2002-09-14 7455
36 [질문] 함수에 관해 hongiro 2002-10-15 7325
35 콘솔모드는... [1] 여치 2002-10-02 7306
34 [re] [질문] 함수에 관해 여치 2002-10-15 7266
33 정밀한 퍼포먼스 체크 여치 2002-10-19 7203
32 [re] 오랜만에 질문 하나 드립니다~ [1] 여치 2003-08-08 7199
31 개나 소나 만드는 바이러스 강좌 #! 여치 2002-04-22 7151
30 오랜만에 질문 하나 드립니다~ 풍이 2003-08-07 7075
29 [re] [질문]HeightField에서 LOD는 안쓰시나요? 여치 2004-05-05 6931
28 판타지스타 온라인 for pc를 해보고... 여치 2002-09-19 6851
27 가상함수는 어떻게 호출되나? 여치 2002-10-19 6698
26 [re] [질문] 게임 [2] hongiro 2003-07-08 6645
25 [re] 3D Programming에 관한 책을 추천해주실 수 있으신지요... 여치 2002-10-11 6636
24 o/s의 내부에 대해 자세하게 알고싶은데여... 베지타 2002-10-12 6566



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