⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 lua移植到mtk平台小结.htm

📁 MTK上实现虚拟机的一种有效方案
💻 HTM
📖 第 1 页 / 共 2 页
字号:
  <LI class=alt><SPAN></SPAN>
  <LI><SPAN>lua_State&nbsp;*&nbsp;L;</SPAN> 
  <LI class=alt><SPAN></SPAN>
  <LI><SPAN></SPAN><SPAN 
  class=keyword>void</SPAN><SPAN>&nbsp;Key1DownHandler()</SPAN> 
  <LI class=alt><SPAN>{</SPAN> 
  <LI><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;func&nbsp;(L,KEY_DOWN,KEY1,0);</SPAN> 
  <LI class=alt><SPAN>}</SPAN> 
  <LI><SPAN></SPAN><SPAN 
  class=keyword>void</SPAN><SPAN>&nbsp;Key2DownHandler()</SPAN> 
  <LI class=alt><SPAN>{</SPAN> 
  <LI><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;func&nbsp;(L,KEY_DOWN,KEY2,0);</SPAN> 
  <LI class=alt><SPAN>}</SPAN> 
  <LI><SPAN></SPAN><SPAN 
  class=keyword>void</SPAN><SPAN>&nbsp;Key3DownHandler()</SPAN> 
  <LI class=alt><SPAN>{</SPAN> 
  <LI><SPAN></SPAN>
  <LI 
  class=alt><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;func&nbsp;(L,KEY_DOWN,KEY3,0);</SPAN> 
  <LI><SPAN>}</SPAN> 
  <LI class=alt><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;...................</SPAN> 
  <LI><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;</SPAN> 
  <LI class=alt><SPAN></SPAN><SPAN 
  class=keyword>void</SPAN><SPAN>&nbsp;KeyRSKDownHandler()</SPAN> 
  <LI><SPAN>{</SPAN> 
  <LI 
  class=alt><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;func&nbsp;(L,KEY_DOWN,&nbsp;KEY_RSK,0);</SPAN> 

  <LI><SPAN>}</SPAN> 
  <LI class=alt><SPAN></SPAN><SPAN 
  class=keyword>void</SPAN><SPAN>&nbsp;KeyRSKUpHandler()</SPAN> 
  <LI><SPAN>{</SPAN> 
  <LI 
  class=alt><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;func&nbsp;(L,KEY_UP,KEY_RSK,0);</SPAN> 

  <LI><SPAN>}</SPAN> 
  <LI class=alt><SPAN></SPAN>
  <LI><SPAN></SPAN>
  <LI class=alt><SPAN></SPAN><SPAN 
  class=keyword>typedef</SPAN><SPAN>&nbsp;</SPAN><SPAN 
  class=keyword>struct</SPAN><SPAN>&nbsp;mtk_key_event</SPAN> 
  <LI><SPAN>{</SPAN> 
  <LI class=alt><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN 
  class=keyword>void</SPAN><SPAN>&nbsp;(*f)&nbsp;();</SPAN> 
  <LI><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN 
  class=datatypes>int</SPAN><SPAN>&nbsp;event;</SPAN> 
  <LI class=alt><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN 
  class=datatypes>int</SPAN><SPAN>&nbsp;eventType;</SPAN> 
  <LI><SPAN>}mtk_key_event;</SPAN> 
  <LI class=alt><SPAN></SPAN>
  <LI><SPAN></SPAN><SPAN 
  class=keyword>const</SPAN><SPAN>&nbsp;mtk_key_event&nbsp;eventHandlerS[]=</SPAN> 

  <LI class=alt><SPAN>{</SPAN> 
  <LI><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;{Key1DownHandler,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;KEY_1,&nbsp;&nbsp;&nbsp;&nbsp;KEY_EVENT_DOWN&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;},</SPAN> 

  <LI 
  class=alt><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;{Key2DownHandler,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;KEY_2,&nbsp;&nbsp;&nbsp;&nbsp;KEY_EVENT_DOWN&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;},</SPAN> 

  <LI><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;{Key2DownHandler,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;KEY_2,&nbsp;&nbsp;&nbsp;&nbsp;KEY_EVENT_DOWN&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;},</SPAN> 

  <LI class=alt><SPAN></SPAN>
  <LI><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;...................</SPAN> 
  <LI class=alt><SPAN></SPAN>
  <LI><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;{KeyRSKDownHandler,&nbsp;&nbsp;&nbsp;KEY_RSK,&nbsp;&nbsp;KEY_EVENT_DOWN},</SPAN> 

  <LI 
  class=alt><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;{KeyRSKUpHandler,&nbsp;&nbsp;&nbsp;KEY_RSK,&nbsp;&nbsp;&nbsp;&nbsp;KEY_EVENT_UP},</SPAN> 

  <LI><SPAN>};</SPAN> 
  <LI class=alt><SPAN></SPAN>
  <LI><SPAN></SPAN><SPAN 
  class=keyword>void</SPAN><SPAN>&nbsp;lua_set_key_handler(</SPAN><SPAN 
  class=keyword>void</SPAN><SPAN>)</SPAN> 
  <LI class=alt><SPAN>{</SPAN> 
  <LI><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN 
  class=keyword>for</SPAN><SPAN>(i&nbsp;=0;i&nbsp;&lt;</SPAN><SPAN 
  class=keyword>sizeof</SPAN><SPAN>(eventHandlerS)/</SPAN><SPAN 
  class=keyword>sizeof</SPAN><SPAN>(eventHandlerS[0]);i++)</SPAN> 
  <LI class=alt><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;{</SPAN> 
  <LI><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN 
  class=comment>//TODO:Clear&nbsp;Key&nbsp;Handler</SPAN><SPAN></SPAN> 
  <LI class=alt><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;}</SPAN> 
  <LI><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN 
  class=keyword>for</SPAN><SPAN>(i&nbsp;=0;i&nbsp;&lt;</SPAN><SPAN 
  class=keyword>sizeof</SPAN><SPAN>(eventHandlerS)/</SPAN><SPAN 
  class=keyword>sizeof</SPAN><SPAN>(eventHandlerS[0]);i++)</SPAN> 
  <LI class=alt><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;{</SPAN> 
  <LI><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SetKeyHandler(eventHandlerS[i].f,&nbsp;&nbsp;eventHandlerS[i].event,&nbsp;eventHandlerS[i].eventType);</SPAN> 

  <LI class=alt><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;}</SPAN> 
  <LI><SPAN>}</SPAN> 
  <LI class=alt><SPAN></SPAN>
  <LI><SPAN></SPAN><SPAN 
  class=datatypes>int</SPAN><SPAN>&nbsp;my_event_handler(</SPAN><SPAN 
  class=keyword>void</SPAN><SPAN>&nbsp;*pthis,</SPAN><SPAN 
  class=datatypes>int</SPAN><SPAN>&nbsp;evtType,&nbsp;</SPAN><SPAN 
  class=datatypes>UINT32</SPAN><SPAN>&nbsp;param1,&nbsp;</SPAN><SPAN 
  class=datatypes>UINT32</SPAN><SPAN>&nbsp;param2)</SPAN> 
  <LI class=alt><SPAN>{</SPAN> 
  <LI><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN 
  class=datatypes>int</SPAN><SPAN>&nbsp;ret&nbsp;=&nbsp;0;</SPAN> 
  <LI class=alt><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN 
  class=keyword>switch</SPAN><SPAN>&nbsp;(evtType)</SPAN> 
  <LI><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;{</SPAN> 
  <LI 
  class=alt><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN 
  class=keyword>case</SPAN><SPAN>&nbsp;KEY_DOWN:</SPAN> 
  <LI><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{</SPAN> 
  <LI 
  class=alt><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN 
  class=keyword>return</SPAN><SPAN>&nbsp;lua_event_handler(L,&nbsp;evtType,&nbsp;param1,&nbsp;param2);</SPAN> 

  <LI><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</SPAN> 
  <LI class=alt><SPAN></SPAN>
  <LI><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN 
  class=keyword>case</SPAN><SPAN>&nbsp;INIT:</SPAN> 
  <LI class=alt><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{</SPAN> 
  <LI><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;L&nbsp;=&nbsp;lua_open();</SPAN> 

  <LI 
  class=alt><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;luaL_openlibs(L);</SPAN> 

  <LI><SPAN></SPAN>
  <LI 
  class=alt><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;my_openlibs(L);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN 
  class=comment>//&nbsp;注册&nbsp;C&nbsp;函数</SPAN><SPAN></SPAN> 
  <LI><SPAN></SPAN>
  <LI 
  class=alt><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;luaL_dofile(L,&nbsp;(</SPAN><SPAN 
  class=datatypes>char</SPAN><SPAN>*)param1);</SPAN> 
  <LI><SPAN></SPAN>
  <LI 
  class=alt><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;lua_event_handler(L,&nbsp;evtType,&nbsp;param1,&nbsp;param2);</SPAN> 

  <LI><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</SPAN> 
  <LI 
  class=alt><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN 
  class=comment>//TODO:&nbsp;other&nbsp;event</SPAN><SPAN></SPAN> 
  <LI><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;}</SPAN> 
  <LI class=alt><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN 
  class=keyword>return</SPAN><SPAN>&nbsp;1;</SPAN> 
  <LI><SPAN>}</SPAN> 
  <LI class=alt><SPAN></SPAN>
  <LI><SPAN></SPAN>
  <LI class=alt><SPAN>unsigned&nbsp;</SPAN><SPAN 
  class=datatypes>int</SPAN><SPAN>&nbsp;lua_event_handler(lua_State&nbsp;*L,&nbsp;</SPAN><SPAN 
  class=datatypes>int</SPAN><SPAN>&nbsp;evtType,&nbsp;</SPAN><SPAN 
  class=datatypes>UINT32</SPAN><SPAN>&nbsp;param1,&nbsp;</SPAN><SPAN 
  class=datatypes>UINT32</SPAN><SPAN>&nbsp;param2)</SPAN> 
  <LI><SPAN>{</SPAN> 
  <LI class=alt><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;unsigned&nbsp;</SPAN><SPAN 
  class=datatypes>int</SPAN><SPAN>&nbsp;ret&nbsp;=&nbsp;0;</SPAN> 
  <LI><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;</SPAN> 
  <LI class=alt><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;lua_getglobal(L,</SPAN><SPAN 
  class=string>"main"</SPAN><SPAN>);</SPAN> 
  <LI><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;lua_pushnumber(L,&nbsp;evtType);</SPAN> 
  <LI 
  class=alt><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;lua_pushnumber(L,&nbsp;param1);</SPAN> 

  <LI><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;lua_pushnumber(L,&nbsp;param2);</SPAN> 
  <LI class=alt><SPAN></SPAN>
  <LI><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN 
  class=keyword>if</SPAN><SPAN>(lua_pcall(L,&nbsp;3,&nbsp;1,&nbsp;0)&nbsp;!=&nbsp;0)</SPAN> 

  <LI class=alt><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;{</SPAN> 
  <LI><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN 
  class=keyword>const</SPAN><SPAN>&nbsp;</SPAN><SPAN 
  class=datatypes>char</SPAN><SPAN>&nbsp;*str;</SPAN> 
  <LI 
  class=alt><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;lua_pop(L,1);</SPAN> 

  <LI><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;str&nbsp;=&nbsp;lua_tostring(L,&nbsp;0);</SPAN> 

  <LI 
  class=alt><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ret&nbsp;=&nbsp;ret;</SPAN> 

  <LI><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;}</SPAN> 
  <LI class=alt><SPAN></SPAN>
  <LI><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;ret&nbsp;=&nbsp;(unsigned&nbsp;</SPAN><SPAN 
  class=datatypes>int</SPAN><SPAN>)lua_tonumber(L,&nbsp;-1);</SPAN> 
  <LI class=alt><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;lua_pop(L,&nbsp;1);</SPAN> 
  <LI><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN 
  class=keyword>return</SPAN><SPAN>&nbsp;ret;</SPAN> 
  <LI class=alt><SPAN>}</SPAN> 
  <LI><SPAN></SPAN></LI></OL></DIV></O:P></SPAN>
<P></P>
<P class=MsoNormal><SPAN lang=EN-US>4</SPAN><SPAN 
style="FONT-FAMILY: 宋体">。初始化以及退出</SPAN></P>
<P class=MsoNormal><SPAN style="FONT-FAMILY: 宋体">
<DIV class=highlighter>
<OL class=highlighter-cpp>
  <LI><SPAN></SPAN>
  <LI class=alt><SPAN></SPAN><SPAN 
  class=datatypes>int</SPAN><SPAN>&nbsp;init()</SPAN> 
  <LI><SPAN>{</SPAN> 
  <LI class=alt><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN 
  class=comment>//TODO:&nbsp;allocate&nbsp;memory</SPAN><SPAN></SPAN> 
  <LI><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN 
  class=comment>//TODO:&nbsp;entry&nbsp;new&nbsp;screen</SPAN><SPAN></SPAN> 
  <LI 
  class=alt><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;func&nbsp;=&nbsp;my_event_handler;</SPAN> 

  <LI><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;lua_set_key_handler();</SPAN> 
  <LI 
  class=alt><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;func(0,&nbsp;INIT,&nbsp;0,&nbsp;0);</SPAN> 

  <LI><SPAN>}</SPAN> 
  <LI class=alt><SPAN></SPAN>
  <LI><SPAN></SPAN><SPAN class=datatypes>int</SPAN><SPAN>&nbsp;fini()</SPAN> 
  <LI class=alt><SPAN>{</SPAN> 
  <LI><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN 
  class=comment>//TODO:free&nbsp;memory</SPAN><SPAN></SPAN> 
  <LI class=alt><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN 
  class=comment>//TODO:&nbsp;exit&nbsp;screen</SPAN><SPAN></SPAN> 
  <LI><SPAN>}</SPAN> 
  <LI class=alt><SPAN></SPAN></LI></OL></DIV><BR></SPAN></DIV></FONT><FONT 
size=2></FONT></DIV></BODY></HTML>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -