2010-09-16 11 views
8

मुझे उम्मीद है कि इस विषय पर जाने में कुछ मदद है। क्या किसी ने कभी भी एप्लिकेशन में लुआ का उपयोग किया है जिसके लिए 32-बिट और 64-बिट समर्थन दोनों की आवश्यकता है? वर्तमान में हम 64-बिट में संक्रमण कर रहे हैं लेकिन क्लाइंट संकलित लुआ स्क्रिप्ट के साथ समस्या हो रही है कि हम 64-बिट संस्करण का उपयोग करके खुद को पुन: संकलित नहीं कर सकते हैं। तो असल में हमें 64-बिट अनुप्रयोग में 32-बिट लुआ का उपयोग करके संकलित बाइटकोड फ़ाइलों को लोड करने में सक्षम होना चाहिए।लुआ 64-बिट संक्रमण समस्या

test.bin.lua में आभासी मशीन बेमेल:: हम एक त्रुटि संदेश प्राप्त जब हम ऐसा करने के लिए कोशिश size_t का आकार 8 है, लेकिन पढ़ने के 4

निश्चित रूप से अच्छी तरह से इस एक स्पष्ट 64 बिट संक्रमण समस्या है। मुश्किल बात यह जानने के लिए है कि बाइनरी को दोबारा बनाने की क्षमता के बिना इसके बारे में क्या करना है।

धन्यवाद

+1

ध्यान दें कि बाइटकोड लोड करना निराश है। स्रोत कोड लोड करने के लिए सुरक्षित और अधिक पोर्टेबल है। – Javier

उत्तर

1

आप LuaDec: "LuaDec is a decompiler for the Lua language." की कोशिश कर सकते मैं इसके बारे में ज्यादा पता नहीं है, और वेबसाइट में कहा गया है कि यह लुआ 5.0.2 निशाना बनाता है। तो, यह बॉक्स से बाहर काम नहीं कर सकता है, लेकिन यह खरोंच से शुरू करने से बेहतर है।

3

32-बिट बाइटकोड फ़ाइलों को पढ़ने के लिए lundump.c को अनुकूलित करना मुश्किल नहीं है। मैंने लुआ मेलिंग सूची में इसके लिए एक रोडमैप पोस्ट किया है। यदि आपको समस्याएं हैं, तो कृपया मुझे ईमेल भेजें।

+0

मुझे इस विषय में रूचि है। क्या आपके पास अपनी मेलिंग सूची पोस्ट है? – Andreas

+0

@ एंड्रियास, शायद यह: http://lua-users.org/lists/lua-l/2006-06/msg00205.html – lhf

+0

धन्यवाद। यह वास्तव में वास्तव में मामूली था क्योंकि मुझे 'lundump.c' को' बाइट्स * और * 8 बाइट्स के आकार_टी' आकारों से निपटने में सक्षम होने के लिए संशोधित करना पड़ा था। इस संशोधन के बाद मेरे प्रोग्राम के 32-बिट संस्करण अब 64-बिट संस्करण और इसके विपरीत उत्पादित बाइटकोड चलाने में सक्षम हैं। बेशक यह 32-बिट पर काम नहीं करेगा यदि वास्तव में डेटा के 2 से 32 बाइट्स के साथ एक स्ट्रिंग है लेकिन मुझे लगता है कि यह असंभव है :) मुझे एक और चीज बदलनी थी जिसे 'हस्ताक्षर' टाइप किया गया था 'हस्ताक्षर किए गए int' के लिए 'क्योंकि निर्देश 32-बिट होना चाहिए। ध्यान दें कि मैं अभी भी लुआ 5.0.2 पर हूं। – Andreas