একটি .dex ফাইল হল ডালভিক বাইটকোডের পরিবহন বিন্যাস। একটি ফাইল একটি বৈধ .dex ফাইল হওয়ার জন্য কিছু সিনট্যাক্টিক্যাল এবং শব্দার্থিক সীমাবদ্ধতা রয়েছে এবং শুধুমাত্র বৈধ .dex ফাইল সমর্থন করার জন্য একটি রানটাইম প্রয়োজন।
সাধারণ .dex অখণ্ডতার সীমাবদ্ধতা
 সাধারণ অখণ্ডতার সীমাবদ্ধতাগুলি একটি .dex ফাইলের বৃহত্তর কাঠামোর সাথে সম্পর্কিত, যেমনটি .dex বিন্যাসে বিস্তারিতভাবে বর্ণিত হয়েছে।
| শনাক্তকারী | বর্ণনা | 
|---|---|
| জি 1 | .dexফাইলেরmagicনম্বর 35 সংস্করণের জন্যdex\n035\0বা পরবর্তী সংস্করণগুলির জন্য অনুরূপ হতে হবে। | 
| G2 | চেকসামটি অবশ্যই magicএবংchecksumক্ষেত্র ছাড়া পুরো ফাইলের বিষয়বস্তুর একটি অ্যাডলার-32 চেকসাম হতে হবে। | 
| G3 | স্বাক্ষরটি অবশ্যই magic,checksumএবংsignatureব্যতীত পুরো ফাইলের বিষয়বস্তুর একটি SHA-1 হ্যাশ হতে হবে। | 
| G4 |     | 
| G5 |     | 
| G6 | endian_tagএর মান অবশ্যই থাকতে হবে:ENDIAN_CONSTANTবাREVERSE_ENDIAN_CONSTANT | 
| G7 |  প্রতিটি    | 
| G8 | map_offছাড়া হেডারের সমস্ত অফসেট ক্ষেত্র অবশ্যই চার-বাইট-সারিবদ্ধ হতে হবে। | 
| G9 | map_offক্ষেত্রটি অবশ্যই শূন্য হতে হবে বা ডেটা বিভাগে বিন্দু হতে হবে। পরবর্তী ক্ষেত্রে,dataবিভাগটি অবশ্যই থাকতে হবে। | 
| জি 10 | link,string_ids,type_ids,proto_ids,field_ids,method_ids,class_defsএবংdataবিভাগগুলির কোনোটিই একে অপরকে বা হেডারকে ওভারল্যাপ করতে হবে না। | 
| জি 11 | যদি একটি মানচিত্র বিদ্যমান থাকে, তাহলে প্রতিটি মানচিত্র এন্ট্রির একটি বৈধ প্রকার থাকতে হবে। প্রতিটি প্রকার সর্বাধিক একবারে প্রদর্শিত হতে পারে। | 
| জি 12 | যদি একটি মানচিত্র বিদ্যমান থাকে, তাহলে প্রতিটি মানচিত্র এন্ট্রিতে অবশ্যই একটি অ-শূন্য অফসেট এবং আকার থাকতে হবে। অফসেটকে অবশ্যই ফাইলের সংশ্লিষ্ট বিভাগে নির্দেশ করতে হবে (যেমন একটি string_id_itemঅবশ্যইstring_idsবিভাগে নির্দেশ করতে হবে) এবং আইটেমের স্পষ্ট বা অন্তর্নিহিত আকার অবশ্যই অংশের প্রকৃত বিষয়বস্তু এবং আকারের সাথে মেলে। | 
| G13 | যদি একটি মানচিত্র বিদ্যমান থাকে, তাহলে মানচিত্র এন্ট্রি n+1এর অফসেট মানচিত্র এন্ট্রিn plus than size of map entry nঅফসেটের চেয়ে বড় বা সমান হতে হবে। এটি অ ওভারল্যাপিং এন্ট্রি এবং নিম্ন থেকে উচ্চ ক্রম বোঝায়। | 
| জি 14 | নিম্নলিখিত ধরনের এন্ট্রিগুলির একটি অফসেট থাকতে হবে যা চার-বাইট-সারিবদ্ধ: string_id_item,type_id_item,proto_id_item,field_id_item,method_id_item,class_def_item,type_list,code_item,annotations_directory_item। | 
| জি 15 |  প্রতিটি   প্রতিটি   রেফারেন্সকৃত  | 
| G16 | প্রতিটি type_id_itemএর জন্য,descriptor_idxক্ষেত্রটিতেstring_idsতালিকায় একটি বৈধ রেফারেন্স থাকতে হবে। উল্লেখিত স্ট্রিংটি অবশ্যই একটি বৈধ টাইপ বর্ণনাকারী হতে হবে। | 
| G17 | প্রতিটি proto_id_itemজন্য,shorty_idxক্ষেত্রেstring_idsতালিকায় একটি বৈধ রেফারেন্স থাকতে হবে। উল্লেখিত স্ট্রিংটি অবশ্যই একটি বৈধ সংক্ষিপ্ত বর্ণনাকারী হতে হবে। এছাড়াও,return_type_idxক্ষেত্রটিtype_idsবিভাগে একটি বৈধ সূচক হতে হবে এবংparameters_offক্ষেত্রটি অবশ্যই শূন্য হতে হবে বাdataবিভাগে নির্দেশ করে একটি বৈধ অফসেট হতে হবে। যদি শূন্য না হয়, প্যারামিটার তালিকায় অবশ্যই কোনো অকার্যকর এন্ট্রি থাকবে না। | 
| জি 18 | প্রতিটি field_id_itemজন্য,class_idxএবংtype_idxউভয় ক্ষেত্রকেইtype_idsতালিকায় বৈধ সূচক হতে হবে।class_idxদ্বারা উল্লেখিত এন্ট্রিটি অবশ্যই একটি নন-অ্যারে রেফারেন্স টাইপ হতে হবে। উপরন্তু,name_idxক্ষেত্রটিstring_idsবিভাগে একটি বৈধ রেফারেন্স হতে হবে, এবং উল্লেখিত এন্ট্রির বিষয়বস্তু অবশ্যইMemberNameস্পেসিফিকেশনের সাথে সঙ্গতিপূর্ণ হতে হবে। | 
| G19 | প্রতিটি method_id_itemএর জন্য,class_idxক্ষেত্রটিtype_idsবিভাগে একটি বৈধ সূচী হতে হবে এবং উল্লেখিত এন্ট্রিটি অবশ্যই একটি নন-অ্যারে রেফারেন্স টাইপ হতে হবে।proto_idক্ষেত্রটি অবশ্যইproto_idsতালিকার একটি বৈধ রেফারেন্স হতে হবে।name_idxক্ষেত্রটিstring_idsবিভাগে একটি বৈধ রেফারেন্স হতে হবে এবং উল্লেখিত এন্ট্রির বিষয়বস্তু অবশ্যইMemberNameস্পেসিফিকেশনের সাথে সঙ্গতিপূর্ণ হতে হবে। | 
| G20 | প্রতিটি field_id_itemজন্য,class_idxক্ষেত্রটিtype_idsতালিকায় একটি বৈধ সূচক হতে হবে। উল্লেখিত এন্ট্রি একটি নন-অ্যারে রেফারেন্স টাইপ হতে হবে। | 
স্ট্যাটিক বাইটকোড সীমাবদ্ধতা
স্ট্যাটিক সীমাবদ্ধতা বাইটকোডের পৃথক উপাদানের সীমাবদ্ধতা। এগুলি সাধারণত নিয়ন্ত্রণ বা ডেটা-প্রবাহ বিশ্লেষণ কৌশল ব্যবহার না করেই পরীক্ষা করা যেতে পারে।
| শনাক্তকারী | বর্ণনা | 
|---|---|
| A1 | insnsঅ্যারে খালি হওয়া উচিত নয়। | 
| A2 | insnsঅ্যারের প্রথম অপকোডে অবশ্যই সূচক শূন্য থাকতে হবে। | 
| A3 | insnsঅ্যারেতে শুধুমাত্র বৈধ ডালভিক অপকোড থাকতে হবে। | 
| A4 | নির্দেশের সূচী n+1অবশ্যই নির্দেশের সূচীnএবং নির্দেশের দৈর্ঘ্যnএর সমান হতে হবে, সম্ভাব্য অপারেন্ডগুলি বিবেচনা করে। | 
| A5 | insnsঅ্যারের শেষ নির্দেশ অবশ্যই indexinsns_size-1এ শেষ হবে। | 
| A6 | সমস্ত gotoএবংif-<kind>লক্ষ্য একই পদ্ধতির মধ্যে opcode হতে হবে। | 
| A7 | একটি packed-switchনির্দেশের সমস্ত লক্ষ্য অবশ্যই একই পদ্ধতির মধ্যে অপকোড হতে হবে। আকার এবং লক্ষ্য তালিকা সামঞ্জস্যপূর্ণ হতে হবে. | 
| A8 | একটি sparse-switchনির্দেশের সমস্ত লক্ষ্য অবশ্যই একই পদ্ধতির মধ্যে অপকোড হতে হবে। সংশ্লিষ্ট টেবিলটি অবশ্যই সামঞ্জস্যপূর্ণ হতে হবে এবং নিম্ন-থেকে-উচ্চের মধ্যে সাজানো হবে। | 
| A9 | const-stringএবংconst-string/jumboনির্দেশাবলীরBঅপারেন্ড অবশ্যই স্ট্রিং ধ্রুবক পুলের একটি বৈধ সূচক হতে হবে। | 
| A10 | iget<kind>এবংiput<kind>নির্দেশাবলীরCঅপারেন্ড অবশ্যই ক্ষেত্রের ধ্রুবক পুলের একটি বৈধ সূচক হতে হবে। উল্লেখিত এন্ট্রি একটি উদাহরণ ক্ষেত্র প্রতিনিধিত্ব করা আবশ্যক. | 
| A11 | sget<kind>এবংsput<kind>নির্দেশাবলীরCঅপারেন্ড অবশ্যই ক্ষেত্রের ধ্রুবক পুলে একটি বৈধ সূচক হতে হবে। উল্লেখিত এন্ট্রি অবশ্যই একটি স্থির ক্ষেত্রের প্রতিনিধিত্ব করবে। | 
| A12 | invoke-virtual,invoke-super,invoke-directএবংinvoke-staticনির্দেশাবলীরCঅপারেন্ড অবশ্যই মেথড কনস্ট্যান্ট পুলের একটি বৈধ সূচক হতে হবে। | 
| A13 | invoke-virtual/range,invoke-super/range,invoke-direct/range, এবংinvoke-static/rangeনির্দেশাবলীরBঅপারেন্ড অবশ্যই পদ্ধতি ধ্রুবক পুলে একটি বৈধ সূচক হতে হবে। | 
| A14 | একটি পদ্ধতি যার নাম একটি '<' দিয়ে শুরু হয় তা শুধুমাত্র VM দ্বারা নিহিতভাবে আহ্বান করতে হবে, একটি .dexফাইল থেকে উদ্ভূত কোড দ্বারা নয়। একমাত্র ব্যতিক্রম হল ইনস্ট্যান্স ইনিশিয়ালাইজার, যাinvoke-directদ্বারা আহ্বান করা যেতে পারে। | 
| A15 | invoke-interfaceনির্দেশেরCঅপারেন্ড অবশ্যই পদ্ধতি ধ্রুবক পুলে একটি বৈধ সূচক হতে হবে। উল্লেখিতmethod_idঅবশ্যই একটি ইন্টারফেসের অন্তর্গত (কোন শ্রেণী নয়)। | 
| A16 | invoke-interface/rangeনির্দেশনারBঅপারেন্ড অবশ্যই পদ্ধতি ধ্রুবক পুলের একটি বৈধ সূচক হতে হবে। উল্লেখিতmethod_idঅবশ্যই একটি ইন্টারফেসের অন্তর্গত (কোন শ্রেণী নয়)। | 
| A17 | const-class,check-cast,new-instance, এবংfilled-new-array/rangeনির্দেশাবলীরBঅপারেন্ড টাইপ ধ্রুবক পুলের মধ্যে একটি বৈধ সূচক হতে হবে। | 
| A18 | instance-of,new-array, এবংfilled-new-arrayনির্দেশাবলীরCঅপারেন্ড অবশ্যই টাইপ ধ্রুবক পুলের একটি বৈধ সূচক হতে হবে। | 
| A19 | একটি new-arrayনির্দেশ দ্বারা তৈরি একটি অ্যারের মাত্রা অবশ্যই256এর কম হতে হবে। | 
| A20 | newনির্দেশ অবশ্যই অ্যারে ক্লাস, ইন্টারফেস বা বিমূর্ত ক্লাস উল্লেখ করবে না। | 
| A21 | একটি new-arrayনির্দেশ দ্বারা উল্লেখিত প্রকারটি অবশ্যই একটি বৈধ, নন-রেফারেন্স টাইপ হতে হবে। | 
| A22 | একক-প্রস্থ (নন-পেয়ার) ফ্যাশনে একটি নির্দেশ দ্বারা উল্লেখ করা সমস্ত রেজিস্টার বর্তমান পদ্ধতির জন্য বৈধ হতে হবে। অর্থাৎ, তাদের সূচকগুলি অবশ্যই নেতিবাচক এবং registers_sizeথেকে ছোট হতে হবে। | 
| A23 | একটি দ্বিগুণ-প্রস্থ (জোড়া) ফ্যাশনে একটি নির্দেশ দ্বারা উল্লেখ করা সমস্ত রেজিস্টার বর্তমান পদ্ধতির জন্য বৈধ হতে হবে। অর্থাৎ, তাদের সূচকগুলি অবশ্যই নেতিবাচক এবং registers_size-1এর চেয়ে ছোট হতে হবে। | 
| A24 | invoke-virtualএবংinvoke-directনির্দেশাবলীরmethod_idঅপারেন্ড অবশ্যই একটি ক্লাসের অন্তর্গত (কোন ইন্টারফেস নয়)। ভার্সন037আগের ডেক্স ফাইলগুলিতেinvoke-superএবংinvoke-staticনির্দেশাবলীর ক্ষেত্রেও এটি সত্য হতে হবে। | 
| A25 | invoke-virtual/rangeএবংinvoke-direct/rangeনির্দেশাবলীরmethod_idঅপারেন্ড অবশ্যই একটি ক্লাসের অন্তর্গত (কোন ইন্টারফেস নয়)।037সংস্করণের পূর্বের ডেক্স ফাইলগুলিতেinvoke-super/rangeএবংinvoke-static/rangeনির্দেশাবলীর ক্ষেত্রেও এটি সত্য হতে হবে। | 
স্ট্রাকচারাল বাইটকোড সীমাবদ্ধতা
স্ট্রাকচারাল সীমাবদ্ধতা হল বাইটকোডের বিভিন্ন উপাদানের মধ্যে সম্পর্কের সীমাবদ্ধতা। এগুলি সাধারণত নিয়ন্ত্রণ বা ডেটা-প্রবাহ বিশ্লেষণ কৌশল ব্যবহার না করে পরীক্ষা করা যায় না।
| শনাক্তকারী | বর্ণনা | 
|---|---|
| B1 | আর্গুমেন্টের সংখ্যা এবং প্রকারগুলি (রেজিস্টার এবং তাত্ক্ষণিক মান) সর্বদা নির্দেশের সাথে মেলে। | 
| B2 | রেজিস্টার জোড়া কখনই ভেঙ্গে যাবে না। | 
| B3 | এটি পড়ার আগে একটি রেজিস্টার (বা জোড়া) প্রথমে বরাদ্দ করতে হবে। | 
| B4 | একটি invoke-directইন্সট্রাকশন অবশ্যই একটি ইনস্ট্যান্স ইনিশিয়ালাইজার বা একটি মেথড চালু করতে হবে শুধুমাত্র বর্তমান ক্লাসে বা তার সুপারক্লাসগুলির একটিতে। | 
| B5 | একটি ইনস্ট্যান্স ইনিশিয়ালাইজার শুধুমাত্র একটি অপ্রবর্তিত দৃষ্টান্তে আহ্বান করতে হবে। | 
| B6 | ইনস্ট্যান্স পদ্ধতি শুধুমাত্র চালু করা যেতে পারে এবং ইনস্ট্যান্স ক্ষেত্রগুলি শুধুমাত্র ইতিমধ্যেই শুরু হওয়া দৃষ্টান্তগুলিতে অ্যাক্সেস করা যেতে পারে। | 
| B7 | একটি new-instanceনির্দেশের ফলাফল ধারণ করে এমন একটি রেজিস্টার ব্যবহার করা উচিত নয় যদি দৃষ্টান্ত শুরু করার আগে একইnew-instanceনির্দেশ আবার কার্যকর করা হয়। | 
| B8 | একটি ইনস্ট্যান্স ইনিশিয়ালাইজারকে অবশ্যই অন্য ইনস্ট্যান্স ইনিশিয়ালাইজারকে কল করতে হবে (একই ক্লাস বা সুপারক্লাস) কোনো ইনস্ট্যান্স সদস্যদের অ্যাক্সেস করার আগে। ব্যতিক্রম হল নন-ইনহেরিটেড ইনস্ট্যান্স ক্ষেত্র, যা অন্য ইনিশিয়ালাইজার এবং সাধারণভাবে Objectক্লাস কল করার আগে বরাদ্দ করা যেতে পারে। | 
| B9 | সমস্ত প্রকৃত পদ্ধতির আর্গুমেন্ট অবশ্যই তাদের নিজ নিজ আনুষ্ঠানিক আর্গুমেন্টের সাথে অ্যাসাইনমেন্ট-সামঞ্জস্যপূর্ণ হতে হবে। | 
| B10 | প্রতিটি দৃষ্টান্ত পদ্ধতি আহ্বানের জন্য, প্রকৃত উদাহরণ অবশ্যই নির্দেশে নির্দিষ্ট করা ক্লাস বা ইন্টারফেসের সাথে অ্যাসাইনমেন্ট-সামঞ্জস্যপূর্ণ হতে হবে। | 
| B11 | একটি return<kind>নির্দেশ অবশ্যই তার পদ্ধতির রিটার্ন টাইপের সাথে মেলে। | 
| B12 | একটি সুপারক্লাসের সুরক্ষিত সদস্যদের অ্যাক্সেস করার সময়, অ্যাক্সেস করা দৃষ্টান্তের প্রকৃত ধরনটি হয় বর্তমান শ্রেণী বা এর একটি উপশ্রেণী হতে হবে। | 
| B13 | একটি স্ট্যাটিক ফিল্ডে সংরক্ষিত একটি মানের প্রকার অবশ্যই অ্যাসাইনমেন্ট-সামঞ্জস্যপূর্ণ বা ক্ষেত্রের প্রকারের সাথে পরিবর্তনযোগ্য হতে হবে। | 
| B14 | একটি ক্ষেত্রের মধ্যে সংরক্ষিত একটি মানের প্রকার অবশ্যই অ্যাসাইনমেন্ট-সামঞ্জস্যপূর্ণ বা ক্ষেত্রের প্রকারের সাথে পরিবর্তনযোগ্য হতে হবে। | 
| B15 | একটি অ্যারেতে সংরক্ষিত প্রতিটি মানের ধরন অবশ্যই অ্যারের উপাদান প্রকারের সাথে অ্যাসাইনমেন্ট-সামঞ্জস্যপূর্ণ হতে হবে। | 
| B16 | একটি throwনির্দেশেরAঅপারেন্ড অবশ্যইjava.lang.Throwableএর সাথে অ্যাসাইনমেন্ট-সামঞ্জস্যপূর্ণ হতে হবে। | 
| B17 | একটি পদ্ধতির শেষ পৌঁছানোর যোগ্য নির্দেশটি অবশ্যই একটি পিছনের দিকের gotoবা শাখা, একটিreturn, বা একটিthrowনির্দেশনা হতে হবে। নীচের অংশেinsnsঅ্যারে ছেড়ে যাওয়া অবশ্যই সম্ভব হবে না। | 
| B18 | প্রাক্তন রেজিস্টার জোড়ার অর্পিত অর্ধেক পড়া যাবে না (অবৈধ বলে বিবেচিত) যতক্ষণ না এটি অন্য কোনও নির্দেশ দ্বারা পুনরায় বরাদ্দ করা হয়। | 
| B19 | একটি move-result<kind>নির্দেশ অবশ্যই একটিinvoke-<kind>নির্দেশ দ্বারা অবিলম্বে (insnsঅ্যারেতে) আগে থাকতে হবে। একমাত্র ব্যতিক্রম হলmove-result-objectনির্দেশনা, যা একটিfilled-new-arrayনির্দেশের আগেও হতে পারে। | 
| B20 | একটি move-result<kind>নির্দেশের সাথে সাথেই (প্রকৃত নিয়ন্ত্রণ প্রবাহে) একটি মিলreturn-<kind>নির্দেশের পূর্বে হতে হবে (এতে লাফ দেওয়া উচিত নয়)। একমাত্র ব্যতিক্রম হলmove-result-objectনির্দেশনা, যা একটিfilled-new-arrayনির্দেশের আগেও হতে পারে। | 
| B21 | একটি move-exceptionনির্দেশ শুধুমাত্র একটি ব্যতিক্রম হ্যান্ডলারে প্রথম নির্দেশ হিসাবে উপস্থিত হওয়া আবশ্যক। | 
| B22 | packed-switch-data,sparse-switch-data, এবংfill-array-dataছদ্ম-নির্দেশগুলি নিয়ন্ত্রণ প্রবাহের মাধ্যমে পৌঁছানো উচিত নয়। | 
 একটি .dex ফাইল হল ডালভিক বাইটকোডের পরিবহন বিন্যাস। একটি ফাইল একটি বৈধ .dex ফাইল হওয়ার জন্য কিছু সিনট্যাক্টিক্যাল এবং শব্দার্থিক সীমাবদ্ধতা রয়েছে এবং শুধুমাত্র বৈধ .dex ফাইল সমর্থন করার জন্য একটি রানটাইম প্রয়োজন।
সাধারণ .dex অখণ্ডতার সীমাবদ্ধতা
 সাধারণ অখণ্ডতার সীমাবদ্ধতাগুলি একটি .dex ফাইলের বৃহত্তর কাঠামোর সাথে সম্পর্কিত, যেমনটি .dex বিন্যাসে বিস্তারিতভাবে বর্ণিত হয়েছে।
| শনাক্তকারী | বর্ণনা | 
|---|---|
| জি 1 | .dexফাইলেরmagicনম্বর 35 সংস্করণের জন্যdex\n035\0বা পরবর্তী সংস্করণগুলির জন্য অনুরূপ হতে হবে। | 
| G2 | চেকসামটি অবশ্যই magicএবংchecksumক্ষেত্র ছাড়া পুরো ফাইলের বিষয়বস্তুর একটি অ্যাডলার-32 চেকসাম হতে হবে। | 
| G3 | স্বাক্ষরটি অবশ্যই magic,checksumএবংsignatureব্যতীত পুরো ফাইলের বিষয়বস্তুর একটি SHA-1 হ্যাশ হতে হবে। | 
| G4 |     | 
| G5 |     | 
| G6 | endian_tagএর মান অবশ্যই থাকতে হবে:ENDIAN_CONSTANTবাREVERSE_ENDIAN_CONSTANT | 
| G7 |  প্রতিটি    | 
| G8 | map_offছাড়া হেডারের সমস্ত অফসেট ক্ষেত্র অবশ্যই চার-বাইট-সারিবদ্ধ হতে হবে। | 
| G9 | map_offক্ষেত্রটি অবশ্যই শূন্য হতে হবে বা ডেটা বিভাগে বিন্দু হতে হবে। পরবর্তী ক্ষেত্রে,dataবিভাগটি অবশ্যই থাকতে হবে। | 
| জি 10 | link,string_ids,type_ids,proto_ids,field_ids,method_ids,class_defsএবংdataবিভাগগুলির কোনোটিই একে অপরকে বা হেডারকে ওভারল্যাপ করতে হবে না। | 
| জি 11 | যদি একটি মানচিত্র বিদ্যমান থাকে, তাহলে প্রতিটি মানচিত্র এন্ট্রির একটি বৈধ প্রকার থাকতে হবে। প্রতিটি প্রকার সর্বাধিক একবারে প্রদর্শিত হতে পারে। | 
| জি 12 | যদি একটি মানচিত্র বিদ্যমান থাকে, তাহলে প্রতিটি মানচিত্র এন্ট্রিতে অবশ্যই একটি অ-শূন্য অফসেট এবং আকার থাকতে হবে। অফসেটকে অবশ্যই ফাইলের সংশ্লিষ্ট বিভাগে নির্দেশ করতে হবে (যেমন একটি string_id_itemঅবশ্যইstring_idsবিভাগে নির্দেশ করতে হবে) এবং আইটেমের স্পষ্ট বা অন্তর্নিহিত আকার অবশ্যই অংশের প্রকৃত বিষয়বস্তু এবং আকারের সাথে মেলে। | 
| G13 | যদি একটি মানচিত্র বিদ্যমান থাকে, তাহলে মানচিত্র এন্ট্রি n+1এর অফসেট মানচিত্র এন্ট্রিn plus than size of map entry nঅফসেটের চেয়ে বড় বা সমান হতে হবে। এটি অ ওভারল্যাপিং এন্ট্রি এবং নিম্ন থেকে উচ্চ ক্রম বোঝায়। | 
| জি 14 | নিম্নলিখিত ধরনের এন্ট্রিগুলির একটি অফসেট থাকতে হবে যা চার-বাইট-সারিবদ্ধ: string_id_item,type_id_item,proto_id_item,field_id_item,method_id_item,class_def_item,type_list,code_item,annotations_directory_item। | 
| জি 15 |  প্রতিটি   প্রতিটি   রেফারেন্সকৃত  | 
| G16 | প্রতিটি type_id_itemএর জন্য,descriptor_idxক্ষেত্রটিতেstring_idsতালিকায় একটি বৈধ রেফারেন্স থাকতে হবে। উল্লেখিত স্ট্রিংটি অবশ্যই একটি বৈধ টাইপ বর্ণনাকারী হতে হবে। | 
| G17 | প্রতিটি proto_id_itemজন্য,shorty_idxক্ষেত্রেstring_idsতালিকায় একটি বৈধ রেফারেন্স থাকতে হবে। উল্লেখিত স্ট্রিংটি অবশ্যই একটি বৈধ সংক্ষিপ্ত বর্ণনাকারী হতে হবে। এছাড়াও,return_type_idxক্ষেত্রটিtype_idsবিভাগে একটি বৈধ সূচক হতে হবে এবংparameters_offক্ষেত্রটি অবশ্যই শূন্য হতে হবে বাdataবিভাগে নির্দেশ করে একটি বৈধ অফসেট হতে হবে। যদি শূন্য না হয়, প্যারামিটার তালিকায় অবশ্যই কোনো অকার্যকর এন্ট্রি থাকবে না। | 
| জি 18 | প্রতিটি field_id_itemজন্য,class_idxএবংtype_idxউভয় ক্ষেত্রকেইtype_idsতালিকায় বৈধ সূচক হতে হবে।class_idxদ্বারা উল্লেখিত এন্ট্রিটি অবশ্যই একটি নন-অ্যারে রেফারেন্স টাইপ হতে হবে। উপরন্তু,name_idxক্ষেত্রটিstring_idsবিভাগে একটি বৈধ রেফারেন্স হতে হবে, এবং উল্লেখিত এন্ট্রির বিষয়বস্তু অবশ্যইMemberNameস্পেসিফিকেশনের সাথে সঙ্গতিপূর্ণ হতে হবে। | 
| G19 | প্রতিটি method_id_itemএর জন্য,class_idxক্ষেত্রটিtype_idsবিভাগে একটি বৈধ সূচী হতে হবে এবং উল্লেখিত এন্ট্রিটি অবশ্যই একটি নন-অ্যারে রেফারেন্স টাইপ হতে হবে।proto_idক্ষেত্রটি অবশ্যইproto_idsতালিকার একটি বৈধ রেফারেন্স হতে হবে।name_idxক্ষেত্রটিstring_idsবিভাগে একটি বৈধ রেফারেন্স হতে হবে এবং উল্লেখিত এন্ট্রির বিষয়বস্তু অবশ্যইMemberNameস্পেসিফিকেশনের সাথে সঙ্গতিপূর্ণ হতে হবে। | 
| G20 | প্রতিটি field_id_itemজন্য,class_idxক্ষেত্রটিtype_idsতালিকায় একটি বৈধ সূচক হতে হবে। উল্লেখিত এন্ট্রি একটি নন-অ্যারে রেফারেন্স টাইপ হতে হবে। | 
স্ট্যাটিক বাইটকোড সীমাবদ্ধতা
স্ট্যাটিক সীমাবদ্ধতা বাইটকোডের পৃথক উপাদানের সীমাবদ্ধতা। এগুলি সাধারণত নিয়ন্ত্রণ বা ডেটা-প্রবাহ বিশ্লেষণ কৌশল ব্যবহার না করেই পরীক্ষা করা যেতে পারে।
| শনাক্তকারী | বর্ণনা | 
|---|---|
| A1 | insnsঅ্যারে খালি হওয়া উচিত নয়। | 
| A2 | insnsঅ্যারের প্রথম অপকোডে অবশ্যই সূচক শূন্য থাকতে হবে। | 
| A3 | insnsঅ্যারেতে শুধুমাত্র বৈধ ডালভিক অপকোড থাকতে হবে। | 
| A4 | নির্দেশের সূচী n+1অবশ্যই নির্দেশের সূচীnএবং নির্দেশের দৈর্ঘ্যnএর সমান হতে হবে, সম্ভাব্য অপারেন্ডগুলি বিবেচনা করে। | 
| A5 | insnsঅ্যারের শেষ নির্দেশ অবশ্যই indexinsns_size-1এ শেষ হবে। | 
| A6 | সমস্ত gotoএবংif-<kind>লক্ষ্য একই পদ্ধতির মধ্যে opcode হতে হবে। | 
| A7 | একটি packed-switchনির্দেশের সমস্ত লক্ষ্য অবশ্যই একই পদ্ধতির মধ্যে অপকোড হতে হবে। আকার এবং লক্ষ্য তালিকা সামঞ্জস্যপূর্ণ হতে হবে. | 
| A8 | একটি sparse-switchনির্দেশের সমস্ত লক্ষ্য অবশ্যই একই পদ্ধতির মধ্যে অপকোড হতে হবে। সংশ্লিষ্ট টেবিলটি অবশ্যই সামঞ্জস্যপূর্ণ হতে হবে এবং নিম্ন-থেকে-উচ্চের মধ্যে সাজানো হবে। | 
| A9 | const-stringএবংconst-string/jumboনির্দেশাবলীরBঅপারেন্ড অবশ্যই স্ট্রিং ধ্রুবক পুলের একটি বৈধ সূচক হতে হবে। | 
| A10 | iget<kind>এবংiput<kind>নির্দেশাবলীরCঅপারেন্ড অবশ্যই ক্ষেত্রের ধ্রুবক পুলের একটি বৈধ সূচক হতে হবে। উল্লেখিত এন্ট্রি একটি উদাহরণ ক্ষেত্র প্রতিনিধিত্ব করা আবশ্যক. | 
| A11 | sget<kind>এবংsput<kind>নির্দেশাবলীরCঅপারেন্ড অবশ্যই ক্ষেত্রের ধ্রুবক পুলে একটি বৈধ সূচক হতে হবে। উল্লেখিত এন্ট্রি অবশ্যই একটি স্থির ক্ষেত্রের প্রতিনিধিত্ব করবে। | 
| A12 | invoke-virtual,invoke-super,invoke-directএবংinvoke-staticনির্দেশাবলীরCঅপারেন্ড অবশ্যই মেথড কনস্ট্যান্ট পুলের একটি বৈধ সূচক হতে হবে। | 
| A13 | invoke-virtual/range,invoke-super/range,invoke-direct/range, এবংinvoke-static/rangeনির্দেশাবলীরBঅপারেন্ড অবশ্যই পদ্ধতি ধ্রুবক পুলে একটি বৈধ সূচক হতে হবে। | 
| A14 | একটি পদ্ধতি যার নাম একটি '<' দিয়ে শুরু হয় তা শুধুমাত্র VM দ্বারা নিহিতভাবে আহ্বান করতে হবে, একটি .dexফাইল থেকে উদ্ভূত কোড দ্বারা নয়। একমাত্র ব্যতিক্রম হল ইনস্ট্যান্স ইনিশিয়ালাইজার, যাinvoke-directদ্বারা আহ্বান করা যেতে পারে। | 
| A15 | invoke-interfaceনির্দেশেরCঅপারেন্ড অবশ্যই পদ্ধতি ধ্রুবক পুলে একটি বৈধ সূচক হতে হবে। উল্লেখিতmethod_idঅবশ্যই একটি ইন্টারফেসের অন্তর্গত (কোন শ্রেণী নয়)। | 
| A16 | invoke-interface/rangeনির্দেশনারBঅপারেন্ড অবশ্যই পদ্ধতি ধ্রুবক পুলের একটি বৈধ সূচক হতে হবে। উল্লেখিতmethod_idঅবশ্যই একটি ইন্টারফেসের অন্তর্গত (কোন শ্রেণী নয়)। | 
| A17 | const-class,check-cast,new-instance, এবংfilled-new-array/rangeনির্দেশাবলীরBঅপারেন্ড টাইপ ধ্রুবক পুলের মধ্যে একটি বৈধ সূচক হতে হবে। | 
| A18 | instance-of,new-array, এবংfilled-new-arrayনির্দেশাবলীরCঅপারেন্ড অবশ্যই টাইপ ধ্রুবক পুলের একটি বৈধ সূচক হতে হবে। | 
| A19 | একটি new-arrayনির্দেশ দ্বারা তৈরি একটি অ্যারের মাত্রা অবশ্যই256এর কম হতে হবে। | 
| A20 | newনির্দেশ অবশ্যই অ্যারে ক্লাস, ইন্টারফেস বা বিমূর্ত ক্লাস উল্লেখ করবে না। | 
| A21 | একটি new-arrayনির্দেশ দ্বারা উল্লেখিত প্রকারটি অবশ্যই একটি বৈধ, নন-রেফারেন্স টাইপ হতে হবে। | 
| A22 | একক-প্রস্থ (নন-পেয়ার) ফ্যাশনে একটি নির্দেশ দ্বারা উল্লেখ করা সমস্ত রেজিস্টার বর্তমান পদ্ধতির জন্য বৈধ হতে হবে। অর্থাৎ, তাদের সূচকগুলি অবশ্যই নেতিবাচক এবং registers_sizeথেকে ছোট হতে হবে। | 
| A23 | একটি দ্বিগুণ-প্রস্থ (জোড়া) ফ্যাশনে একটি নির্দেশ দ্বারা উল্লেখ করা সমস্ত রেজিস্টার বর্তমান পদ্ধতির জন্য বৈধ হতে হবে। অর্থাৎ, তাদের সূচকগুলি অবশ্যই নেতিবাচক এবং registers_size-1এর চেয়ে ছোট হতে হবে। | 
| A24 | invoke-virtualএবংinvoke-directনির্দেশাবলীরmethod_idঅপারেন্ড অবশ্যই একটি ক্লাসের অন্তর্গত (কোন ইন্টারফেস নয়)। ভার্সন037আগের ডেক্স ফাইলগুলিতেinvoke-superএবংinvoke-staticনির্দেশাবলীর ক্ষেত্রেও এটি সত্য হতে হবে। | 
| A25 | invoke-virtual/rangeএবংinvoke-direct/rangeনির্দেশাবলীরmethod_idঅপারেন্ড অবশ্যই একটি ক্লাসের অন্তর্গত (কোন ইন্টারফেস নয়)।037সংস্করণের পূর্বের ডেক্স ফাইলগুলিতেinvoke-super/rangeএবংinvoke-static/rangeনির্দেশাবলীর ক্ষেত্রেও এটি সত্য হতে হবে। | 
স্ট্রাকচারাল বাইটকোড সীমাবদ্ধতা
স্ট্রাকচারাল সীমাবদ্ধতা হল বাইটকোডের বিভিন্ন উপাদানের মধ্যে সম্পর্কের সীমাবদ্ধতা। এগুলি সাধারণত নিয়ন্ত্রণ বা ডেটা-প্রবাহ বিশ্লেষণ কৌশল ব্যবহার না করে পরীক্ষা করা যায় না।
| শনাক্তকারী | বর্ণনা | 
|---|---|
| B1 | আর্গুমেন্টের সংখ্যা এবং প্রকারগুলি (রেজিস্টার এবং তাত্ক্ষণিক মান) সর্বদা নির্দেশের সাথে মেলে। | 
| B2 | রেজিস্টার জোড়া কখনই ভেঙ্গে যাবে না। | 
| B3 | এটি পড়ার আগে একটি রেজিস্টার (বা জোড়া) প্রথমে বরাদ্দ করতে হবে। | 
| B4 | একটি invoke-directইন্সট্রাকশন অবশ্যই একটি ইনস্ট্যান্স ইনিশিয়ালাইজার বা একটি মেথড চালু করতে হবে শুধুমাত্র বর্তমান ক্লাসে বা তার সুপারক্লাসগুলির একটিতে। | 
| B5 | একটি ইনস্ট্যান্স ইনিশিয়ালাইজার শুধুমাত্র একটি অপ্রবর্তিত দৃষ্টান্তে আহ্বান করতে হবে। | 
| B6 | ইনস্ট্যান্স পদ্ধতি শুধুমাত্র চালু করা যেতে পারে এবং ইনস্ট্যান্স ক্ষেত্রগুলি শুধুমাত্র ইতিমধ্যেই শুরু হওয়া দৃষ্টান্তগুলিতে অ্যাক্সেস করা যেতে পারে। | 
| B7 | একটি new-instanceনির্দেশের ফলাফল ধারণ করে এমন একটি রেজিস্টার ব্যবহার করা উচিত নয় যদি দৃষ্টান্ত শুরু করার আগে একইnew-instanceনির্দেশ আবার কার্যকর করা হয়। | 
| B8 | একটি ইনস্ট্যান্স ইনিশিয়ালাইজারকে অবশ্যই অন্য ইনস্ট্যান্স ইনিশিয়ালাইজারকে কল করতে হবে (একই ক্লাস বা সুপারক্লাস) কোনো ইনস্ট্যান্স সদস্যদের অ্যাক্সেস করার আগে। ব্যতিক্রম হল নন-ইনহেরিটেড ইনস্ট্যান্স ক্ষেত্র, যা অন্য ইনিশিয়ালাইজার এবং সাধারণভাবে Objectক্লাস কল করার আগে বরাদ্দ করা যেতে পারে। | 
| B9 | সমস্ত প্রকৃত পদ্ধতির আর্গুমেন্ট অবশ্যই তাদের নিজ নিজ আনুষ্ঠানিক আর্গুমেন্টের সাথে অ্যাসাইনমেন্ট-সামঞ্জস্যপূর্ণ হতে হবে। | 
| B10 | প্রতিটি দৃষ্টান্ত পদ্ধতি আহ্বানের জন্য, প্রকৃত উদাহরণ অবশ্যই নির্দেশে নির্দিষ্ট করা ক্লাস বা ইন্টারফেসের সাথে অ্যাসাইনমেন্ট-সামঞ্জস্যপূর্ণ হতে হবে। | 
| B11 | একটি return<kind>নির্দেশ অবশ্যই তার পদ্ধতির রিটার্ন টাইপের সাথে মেলে। | 
| B12 | একটি সুপারক্লাসের সুরক্ষিত সদস্যদের অ্যাক্সেস করার সময়, অ্যাক্সেস করা দৃষ্টান্তের প্রকৃত ধরনটি হয় বর্তমান শ্রেণী বা এর একটি উপশ্রেণী হতে হবে। | 
| B13 | একটি স্ট্যাটিক ফিল্ডে সংরক্ষিত একটি মানের প্রকার অবশ্যই অ্যাসাইনমেন্ট-সামঞ্জস্যপূর্ণ বা ক্ষেত্রের প্রকারের সাথে পরিবর্তনযোগ্য হতে হবে। | 
| B14 | একটি ক্ষেত্রের মধ্যে সংরক্ষিত একটি মানের প্রকার অবশ্যই অ্যাসাইনমেন্ট-সামঞ্জস্যপূর্ণ বা ক্ষেত্রের প্রকারের সাথে পরিবর্তনযোগ্য হতে হবে। | 
| B15 | একটি অ্যারেতে সংরক্ষিত প্রতিটি মানের ধরন অবশ্যই অ্যারের উপাদান প্রকারের সাথে অ্যাসাইনমেন্ট-সামঞ্জস্যপূর্ণ হতে হবে। | 
| B16 | একটি throwনির্দেশেরAঅপারেন্ড অবশ্যইjava.lang.Throwableএর সাথে অ্যাসাইনমেন্ট-সামঞ্জস্যপূর্ণ হতে হবে। | 
| B17 | একটি পদ্ধতির শেষ পৌঁছানোর যোগ্য নির্দেশটি অবশ্যই একটি পিছনের দিকের gotoবা শাখা, একটিreturn, বা একটিthrowনির্দেশনা হতে হবে। নীচের অংশেinsnsঅ্যারে ছেড়ে যাওয়া অবশ্যই সম্ভব হবে না। | 
| B18 | প্রাক্তন রেজিস্টার জোড়ার অর্পিত অর্ধেক পড়া যাবে না (অবৈধ বলে বিবেচিত) যতক্ষণ না এটি অন্য কোনও নির্দেশ দ্বারা পুনরায় বরাদ্দ করা হয়। | 
| B19 | একটি move-result<kind>নির্দেশ অবশ্যই একটিinvoke-<kind>নির্দেশ দ্বারা অবিলম্বে (insnsঅ্যারেতে) আগে থাকতে হবে। একমাত্র ব্যতিক্রম হলmove-result-objectনির্দেশনা, যা একটিfilled-new-arrayনির্দেশের আগেও হতে পারে। | 
| B20 | একটি move-result<kind>নির্দেশের সাথে সাথেই (প্রকৃত নিয়ন্ত্রণ প্রবাহে) একটি মিলreturn-<kind>নির্দেশের পূর্বে হতে হবে (এতে লাফ দেওয়া উচিত নয়)। একমাত্র ব্যতিক্রম হলmove-result-objectনির্দেশনা, যা একটিfilled-new-arrayনির্দেশের আগেও হতে পারে। | 
| B21 | একটি move-exceptionনির্দেশ শুধুমাত্র একটি ব্যতিক্রম হ্যান্ডলারে প্রথম নির্দেশ হিসাবে উপস্থিত হওয়া আবশ্যক। | 
| B22 | packed-switch-data,sparse-switch-data, এবংfill-array-dataছদ্ম-নির্দেশগুলি নিয়ন্ত্রণ প্রবাহের মাধ্যমে পৌঁছানো উচিত নয়। | 
 একটি .dex ফাইল হল ডালভিক বাইটকোডের পরিবহন বিন্যাস। একটি ফাইল একটি বৈধ .dex ফাইল হওয়ার জন্য কিছু সিনট্যাক্টিক্যাল এবং শব্দার্থিক সীমাবদ্ধতা রয়েছে এবং শুধুমাত্র বৈধ .dex ফাইল সমর্থন করার জন্য একটি রানটাইম প্রয়োজন।
সাধারণ .dex অখণ্ডতার সীমাবদ্ধতা
 সাধারণ অখণ্ডতার সীমাবদ্ধতাগুলি একটি .dex ফাইলের বৃহত্তর কাঠামোর সাথে সম্পর্কিত, যেমনটি .dex বিন্যাসে বিস্তারিতভাবে বর্ণিত হয়েছে।
| শনাক্তকারী | বর্ণনা | 
|---|---|
| জি 1 | .dexফাইলেরmagicনম্বর 35 সংস্করণের জন্যdex\n035\0বা পরবর্তী সংস্করণগুলির জন্য অনুরূপ হতে হবে। | 
| G2 | চেকসামটি অবশ্যই magicএবংchecksumক্ষেত্র ছাড়া পুরো ফাইলের বিষয়বস্তুর একটি অ্যাডলার-32 চেকসাম হতে হবে। | 
| G3 | স্বাক্ষরটি অবশ্যই magic,checksumএবংsignatureব্যতীত পুরো ফাইলের বিষয়বস্তুর একটি SHA-1 হ্যাশ হতে হবে। | 
| G4 |     | 
| G5 |     | 
| G6 | endian_tagএর মান থাকতে হবে:ENDIAN_CONSTANTবাREVERSE_ENDIAN_CONSTANT | 
| G7 |  প্রতিটি    | 
| G8 | map_offছাড়া হেডারের সমস্ত অফসেট ক্ষেত্র অবশ্যই চার-বাইট-সারিবদ্ধ হতে হবে। | 
| G9 | map_offক্ষেত্রটি অবশ্যই শূন্য হতে হবে বা ডেটা বিভাগে বিন্দু হতে হবে। পরবর্তী ক্ষেত্রে,dataবিভাগটি অবশ্যই থাকতে হবে। | 
| জি 10 | link,string_ids,type_ids,proto_ids,field_ids,method_ids,class_defsএবংdataবিভাগগুলির কোনোটিই একে অপরকে বা হেডারকে ওভারল্যাপ করতে হবে না। | 
| জি 11 | যদি একটি মানচিত্র বিদ্যমান থাকে, তাহলে প্রতিটি মানচিত্র এন্ট্রির একটি বৈধ প্রকার থাকতে হবে। প্রতিটি প্রকার সর্বাধিক একবারে প্রদর্শিত হতে পারে। | 
| জি 12 | যদি একটি মানচিত্র বিদ্যমান থাকে, তাহলে প্রতিটি মানচিত্র এন্ট্রিতে অবশ্যই একটি অ-শূন্য অফসেট এবং আকার থাকতে হবে। অফসেটকে অবশ্যই ফাইলের সংশ্লিষ্ট বিভাগে নির্দেশ করতে হবে (যেমন একটি string_id_itemঅবশ্যইstring_idsবিভাগে নির্দেশ করতে হবে) এবং আইটেমের স্পষ্ট বা অন্তর্নিহিত আকার অবশ্যই অংশের প্রকৃত বিষয়বস্তু এবং আকারের সাথে মেলে। | 
| G13 | যদি একটি মানচিত্র বিদ্যমান থাকে, তাহলে মানচিত্র এন্ট্রি n+1এর অফসেট মানচিত্র এন্ট্রিn plus than size of map entry nঅফসেটের চেয়ে বড় বা সমান হতে হবে। এটি অ ওভারল্যাপিং এন্ট্রি এবং নিম্ন থেকে উচ্চ ক্রম বোঝায়। | 
| জি 14 | নিম্নলিখিত ধরনের এন্ট্রিগুলির একটি অফসেট থাকতে হবে যা চার-বাইট-সারিবদ্ধ: string_id_item,type_id_item,proto_id_item,field_id_item,method_id_item,class_def_item,type_list,code_item,annotations_directory_item। | 
| জি 15 |  প্রতিটি   প্রতিটি   রেফারেন্সকৃত  | 
| G16 | প্রতিটি type_id_itemএর জন্য,descriptor_idxক্ষেত্রটিতেstring_idsতালিকায় একটি বৈধ রেফারেন্স থাকতে হবে। উল্লেখিত স্ট্রিংটি অবশ্যই একটি বৈধ টাইপ বর্ণনাকারী হতে হবে। | 
| G17 | প্রতিটি proto_id_itemজন্য,shorty_idxক্ষেত্রেরstring_idsতালিকায় একটি বৈধ রেফারেন্স থাকতে হবে। উল্লেখিত স্ট্রিংটি অবশ্যই একটি বৈধ সংক্ষিপ্ত বর্ণনাকারী হতে হবে। এছাড়াও,return_type_idxক্ষেত্রটিtype_idsবিভাগে একটি বৈধ সূচক হতে হবে এবংparameters_offক্ষেত্রটি অবশ্যই শূন্য হতে হবে বাdataবিভাগে নির্দেশ করে একটি বৈধ অফসেট হতে হবে। যদি শূন্য না হয়, প্যারামিটার তালিকায় অবশ্যই কোনো অকার্যকর এন্ট্রি থাকবে না। | 
| জি 18 | প্রতিটি field_id_itemজন্য,class_idxএবংtype_idxউভয় ক্ষেত্রকেইtype_idsতালিকায় বৈধ সূচক হতে হবে।class_idxদ্বারা উল্লেখিত এন্ট্রিটি অবশ্যই একটি নন-অ্যারে রেফারেন্স টাইপ হতে হবে। উপরন্তু,name_idxক্ষেত্রটিstring_idsবিভাগে একটি বৈধ রেফারেন্স হতে হবে, এবং উল্লেখিত এন্ট্রির বিষয়বস্তু অবশ্যইMemberNameস্পেসিফিকেশনের সাথে সঙ্গতিপূর্ণ হতে হবে। | 
| G19 | প্রতিটি method_id_itemএর জন্য,class_idxক্ষেত্রটিtype_idsবিভাগে একটি বৈধ সূচী হতে হবে এবং উল্লেখিত এন্ট্রিটি অবশ্যই একটি নন-অ্যারে রেফারেন্স টাইপ হতে হবে।proto_idক্ষেত্রটি অবশ্যইproto_idsতালিকার একটি বৈধ রেফারেন্স হতে হবে।name_idxক্ষেত্রটিstring_idsবিভাগে একটি বৈধ রেফারেন্স হতে হবে এবং উল্লেখিত এন্ট্রির বিষয়বস্তু অবশ্যইMemberNameস্পেসিফিকেশনের সাথে সঙ্গতিপূর্ণ হতে হবে। | 
| G20 | প্রতিটি field_id_itemজন্য,class_idxক্ষেত্রটিtype_idsতালিকায় একটি বৈধ সূচক হতে হবে। উল্লেখিত এন্ট্রি একটি নন-অ্যারে রেফারেন্স টাইপ হতে হবে। | 
স্ট্যাটিক বাইটকোড সীমাবদ্ধতা
স্ট্যাটিক সীমাবদ্ধতা বাইটকোডের পৃথক উপাদানের সীমাবদ্ধতা। এগুলি সাধারণত নিয়ন্ত্রণ বা ডেটা-প্রবাহ বিশ্লেষণ কৌশল ব্যবহার না করেই পরীক্ষা করা যেতে পারে।
| শনাক্তকারী | বর্ণনা | 
|---|---|
| A1 | insnsঅ্যারে খালি হওয়া উচিত নয়। | 
| A2 | insnsঅ্যারের প্রথম অপকোডে অবশ্যই সূচক শূন্য থাকতে হবে। | 
| A3 | insnsঅ্যারেতে শুধুমাত্র বৈধ ডালভিক অপকোড থাকতে হবে। | 
| A4 | নির্দেশের সূচী n+1অবশ্যই নির্দেশের সূচীnএবং নির্দেশের দৈর্ঘ্যnএর সমান হতে হবে, সম্ভাব্য অপারেন্ডগুলি বিবেচনা করে। | 
| A5 | insnsঅ্যারের শেষ নির্দেশ অবশ্যই indexinsns_size-1এ শেষ হবে। | 
| A6 | সমস্ত gotoএবংif-<kind>লক্ষ্য একই পদ্ধতির মধ্যে opcode হতে হবে। | 
| A7 | একটি packed-switchনির্দেশের সমস্ত লক্ষ্য অবশ্যই একই পদ্ধতির মধ্যে অপকোড হতে হবে। আকার এবং লক্ষ্য তালিকা সামঞ্জস্যপূর্ণ হতে হবে. | 
| A8 | একটি sparse-switchনির্দেশের সমস্ত লক্ষ্য অবশ্যই একই পদ্ধতির মধ্যে অপকোড হতে হবে। সংশ্লিষ্ট টেবিলটি অবশ্যই সামঞ্জস্যপূর্ণ হতে হবে এবং নিম্ন-থেকে-উচ্চের মধ্যে সাজানো হবে। | 
| A9 | const-stringএবংconst-string/jumboনির্দেশাবলীরBঅপারেন্ড অবশ্যই স্ট্রিং ধ্রুবক পুলের একটি বৈধ সূচক হতে হবে। | 
| A10 | iget<kind>এবংiput<kind>নির্দেশাবলীরCঅপারেন্ড অবশ্যই ক্ষেত্রের ধ্রুবক পুলের একটি বৈধ সূচক হতে হবে। উল্লেখিত এন্ট্রি একটি উদাহরণ ক্ষেত্র প্রতিনিধিত্ব করা আবশ্যক. | 
| A11 | sget<kind>এবংsput<kind>নির্দেশাবলীরCঅপারেন্ড অবশ্যই ক্ষেত্রের ধ্রুবক পুলে একটি বৈধ সূচক হতে হবে। উল্লেখিত এন্ট্রি অবশ্যই একটি স্থির ক্ষেত্রের প্রতিনিধিত্ব করবে। | 
| A12 | invoke-virtual,invoke-super,invoke-directএবংinvoke-staticনির্দেশাবলীরCঅপারেন্ড অবশ্যই মেথড কনস্ট্যান্ট পুলের একটি বৈধ সূচক হতে হবে। | 
| A13 | invoke-virtual/range,invoke-super/range,invoke-direct/range, এবংinvoke-static/rangeনির্দেশাবলীরBঅপারেন্ড অবশ্যই পদ্ধতি ধ্রুবক পুলে একটি বৈধ সূচক হতে হবে। | 
| A14 | একটি পদ্ধতি যার নাম একটি '<' দিয়ে শুরু হয় তা শুধুমাত্র VM দ্বারা নিহিতভাবে আহ্বান করতে হবে, একটি .dexফাইল থেকে উদ্ভূত কোড দ্বারা নয়। একমাত্র ব্যতিক্রম হল ইনস্ট্যান্স ইনিশিয়ালাইজার, যাinvoke-directদ্বারা আহ্বান করা যেতে পারে। | 
| A15 | invoke-interfaceনির্দেশেরCঅপারেন্ড অবশ্যই পদ্ধতি ধ্রুবক পুলে একটি বৈধ সূচক হতে হবে। উল্লেখিতmethod_idঅবশ্যই একটি ইন্টারফেসের অন্তর্গত (কোন শ্রেণী নয়)। | 
| A16 | invoke-interface/rangeনির্দেশনারBঅপারেন্ড অবশ্যই পদ্ধতি ধ্রুবক পুলের একটি বৈধ সূচক হতে হবে। উল্লেখিতmethod_idঅবশ্যই একটি ইন্টারফেসের অন্তর্গত (কোন শ্রেণী নয়)। | 
| A17 | const-class,check-cast,new-instance, এবংfilled-new-array/rangeনির্দেশাবলীরBঅপারেন্ড টাইপ ধ্রুবক পুলের মধ্যে একটি বৈধ সূচক হতে হবে। | 
| A18 | instance-of,new-array, এবংfilled-new-arrayনির্দেশাবলীরCঅপারেন্ড অবশ্যই টাইপ ধ্রুবক পুলের একটি বৈধ সূচক হতে হবে। | 
| A19 | একটি new-arrayনির্দেশ দ্বারা তৈরি একটি অ্যারের মাত্রা অবশ্যই256এর কম হতে হবে। | 
| A20 | newনির্দেশ অবশ্যই অ্যারে ক্লাস, ইন্টারফেস বা বিমূর্ত ক্লাস উল্লেখ করবে না। | 
| A21 | একটি new-arrayনির্দেশ দ্বারা উল্লেখিত প্রকারটি অবশ্যই একটি বৈধ, নন-রেফারেন্স টাইপ হতে হবে। | 
| A22 | একক-প্রস্থ (নন-পেয়ার) ফ্যাশনে একটি নির্দেশ দ্বারা উল্লেখ করা সমস্ত রেজিস্টার বর্তমান পদ্ধতির জন্য বৈধ হতে হবে। অর্থাৎ, তাদের সূচকগুলি অবশ্যই নেতিবাচক এবং registers_sizeথেকে ছোট হতে হবে। | 
| A23 | একটি দ্বিগুণ-প্রস্থ (জোড়া) ফ্যাশনে একটি নির্দেশ দ্বারা উল্লেখ করা সমস্ত রেজিস্টার বর্তমান পদ্ধতির জন্য বৈধ হতে হবে। অর্থাৎ, তাদের সূচকগুলি অবশ্যই নেতিবাচক এবং registers_size-1এর চেয়ে ছোট হতে হবে। | 
| A24 | invoke-virtualএবংinvoke-directনির্দেশাবলীরmethod_idঅপারেন্ড অবশ্যই একটি ক্লাসের অন্তর্গত (কোন ইন্টারফেস নয়)। ভার্সন037আগের ডেক্স ফাইলগুলিতেinvoke-superএবংinvoke-staticনির্দেশাবলীর ক্ষেত্রেও এটি সত্য হতে হবে। | 
| A25 | invoke-virtual/rangeএবংinvoke-direct/rangeনির্দেশাবলীরmethod_idঅপারেন্ডটি অবশ্যই একটি শ্রেণীর (কোনও ইন্টারফেস নয়) এর অন্তর্ভুক্ত।037সংস্করণটির পূর্বে ডেক্স ফাইলগুলিতে একই অবশ্যইinvoke-super/rangeএবংinvoke-static/rangeনির্দেশাবলীর ক্ষেত্রে সত্য হতে হবে। | 
স্ট্রাকচারাল বাইটকোড সীমাবদ্ধতা
কাঠামোগত সীমাবদ্ধতাগুলি বাইটকোডের বেশ কয়েকটি উপাদানগুলির মধ্যে সম্পর্কের উপর সীমাবদ্ধতা। এগুলি সাধারণত নিয়ন্ত্রণ বা ডেটা-প্রবাহ বিশ্লেষণ কৌশল ব্যবহার না করে পরীক্ষা করা যায় না।
| শনাক্তকারী | বর্ণনা | 
|---|---|
| B1 | আর্গুমেন্টের সংখ্যা এবং প্রকারগুলি (রেজিস্টার এবং তাত্ক্ষণিক মান) অবশ্যই সর্বদা নির্দেশের সাথে মেলে। | 
| B2 | রেজিস্টার জোড়গুলি কখনই ভেঙে দেওয়া উচিত নয়। | 
| B3 | এটি পড়ার আগে একটি রেজিস্টার (বা জুটি) প্রথমে বরাদ্দ করতে হবে। | 
| B4 | একটি invoke-directনির্দেশাবলী অবশ্যই বর্তমান শ্রেণিতে বা এর একটি সুপারক্লাসের মধ্যে একটি উদাহরণ ইনিশিয়ালাইজার বা একটি পদ্ধতি আহ্বান করতে হবে। | 
| B5 | একটি উদাহরণ ইনিশিয়ালাইজারকে অবশ্যই কেবল একটি নিরবচ্ছিন্ন উদাহরণে অনুরোধ করা উচিত। | 
| B6 | উদাহরণ পদ্ধতিগুলি কেবল চালু করা যেতে পারে এবং উদাহরণস্বরূপ ক্ষেত্রগুলি কেবল ইতিমধ্যে প্রাথমিক উদাহরণগুলিতে অ্যাক্সেস করা যেতে পারে। | 
| B7 | একটি new-instanceনির্দেশের ফলাফল ধারণ করে এমন একটি রেজিস্টার অবশ্যই ব্যবহার করা উচিত নয় যদি একইnew-instanceনির্দেশনাটি আবার উদাহরণটি শুরু করার আগে কার্যকর করা হয়। | 
| B8 | কোনও উদাহরণ সদস্যদের অ্যাক্সেস করার আগে একটি উদাহরণ ইনিশিয়ালাইজারকে অবশ্যই অন্য একটি উদাহরণ ইনিশিয়ালাইজার (একই শ্রেণি বা সুপারক্লাস) কল করতে হবে। ব্যতিক্রমগুলি অ-অন্তর্নিহিত উদাহরণ ক্ষেত্রগুলি, যা অন্য একটি ইনিশিয়ালাইজারকে কল করার আগে এবং সাধারণভাবে Objectক্লাসকে বরাদ্দ করা যেতে পারে। | 
| B9 | সমস্ত প্রকৃত পদ্ধতি যুক্তি অবশ্যই তাদের নিজ নিজ আনুষ্ঠানিক যুক্তিগুলির সাথে অ্যাসাইনমেন্ট-সামঞ্জস্যপূর্ণ হতে হবে। | 
| B10 | প্রতিটি উদাহরণ পদ্ধতির অনুরোধের জন্য, প্রকৃত উদাহরণটি অবশ্যই নির্দেশে বর্ণিত শ্রেণি বা ইন্টারফেসের সাথে অ্যাসাইনমেন্ট-সামঞ্জস্যপূর্ণ হতে হবে। | 
| B11 | একটি return<kind>নির্দেশ অবশ্যই তার পদ্ধতির রিটার্ন ধরণের সাথে মেলে। | 
| B12 | কোনও সুপারক্লাসের সুরক্ষিত সদস্যদের অ্যাক্সেস করার সময়, উদাহরণটি অ্যাক্সেস করা হচ্ছে এমন প্রকৃত ধরণটি অবশ্যই বর্তমান শ্রেণি বা এর একটি সাবক্লাস হতে হবে। | 
| B13 | স্ট্যাটিক ক্ষেত্রে সঞ্চিত মানের ধরণটি অবশ্যই অ্যাসাইনমেন্ট-সামঞ্জস্যপূর্ণ বা ক্ষেত্রের ধরণের সাথে রূপান্তরযোগ্য হতে হবে। | 
| B14 | ক্ষেত্রের মধ্যে সঞ্চিত মানের ধরণটি অবশ্যই অ্যাসাইনমেন্ট-সামঞ্জস্যপূর্ণ বা ক্ষেত্রের ধরণের সাথে রূপান্তরযোগ্য হতে হবে। | 
| B15 | একটি অ্যারেতে সঞ্চিত প্রতিটি মানের ধরণ অবশ্যই অ্যারের উপাদানগুলির সাথে অ্যাসাইনমেন্ট-সামঞ্জস্যপূর্ণ হতে হবে। | 
| B16 | একটি throwনির্দেশেরAঅপারেন্ড অবশ্যইjava.lang.Throwableসাথে অ্যাসাইনমেন্ট-সামঞ্জস্যপূর্ণ হতে হবে। | 
| B17 | কোনও পদ্ধতির সর্বশেষ পৌঁছনীয় নির্দেশটি অবশ্যই পিছনের দিকে gotoবা শাখা, একটিreturnবা একটিthrowনির্দেশ হতে হবে। নীচেinsnsঅ্যারে রেখে যাওয়া সম্ভব হবে না। | 
| B18 | প্রাক্তন রেজিস্টার জুটির স্বীকৃত অর্ধেকটি অন্য কোনও নির্দেশের মাধ্যমে পুনরায় প্রবর্তিত না হওয়া পর্যন্ত পড়তে পারে না (অবৈধ হিসাবে বিবেচিত হয়)। | 
| B19 | একটি move-result<kind>নির্দেশ অবশ্যই অবিলম্বে (insnsঅ্যারেতে) একটিinvoke-<kind>নির্দেশের মাধ্যমে অবশ্যই আগে থাকতে হবে। একমাত্র ব্যতিক্রম হ'লmove-result-objectনির্দেশনা, যাfilled-new-arrayনির্দেশের আগেও হতে পারে। | 
| B20 | একটি move-result<kind>নির্দেশনা অবশ্যই অবিলম্বে (প্রকৃত নিয়ন্ত্রণ প্রবাহে) একটি মিলে যাওয়াreturn-<kind>নির্দেশের মাধ্যমে (এটি অবশ্যই লাফিয়ে উঠতে হবে না)। একমাত্র ব্যতিক্রম হ'লmove-result-objectনির্দেশনা, যাfilled-new-arrayনির্দেশের আগেও হতে পারে। | 
| B21 | একটি move-exceptionনির্দেশ অবশ্যই একটি ব্যতিক্রম হ্যান্ডলারের প্রথম নির্দেশ হিসাবে উপস্থিত হতে হবে। | 
| B22 | packed-switch-data,sparse-switch-dataএবংfill-array-dataসিউডো-ইনস্ট্রাকশনগুলি নিয়ন্ত্রণ প্রবাহের মাধ্যমে পৌঁছানোর যোগ্য হওয়া উচিত নয়। | 
 একটি .dex ফাইল হ'ল ডালভিক বাইটকোডের পরিবহন বিন্যাস। কোনও ফাইলের বৈধ .dex ফাইল হওয়ার জন্য নির্দিষ্ট সিনট্যাক্টিকাল এবং শব্দার্থগত সীমাবদ্ধতা রয়েছে এবং কেবলমাত্র বৈধ .ডেক্স ফাইলগুলি সমর্থন করার জন্য একটি রানটাইম প্রয়োজন।
সাধারণ .ডেক্স অখণ্ডতা সীমাবদ্ধতা
 সাধারণ অখণ্ডতার সীমাবদ্ধতাগুলি .dex ফাইলের বৃহত্তর কাঠামোর সাথে সম্পর্কিত, যেমন .dex ফর্ম্যাটে বিশদভাবে বর্ণিত।
| শনাক্তকারী | বর্ণনা | 
|---|---|
| জি 1 | .dexফাইলেরmagicনম্বরটি অবশ্যই 35 সংস্করণটির জন্যdex\n035\0হতে হবে, বা পরবর্তী সংস্করণগুলির জন্য অনুরূপ। | 
| G2 | চেকসামটি অবশ্যই magicএবংchecksumক্ষেত্র ব্যতীত পুরো ফাইল সামগ্রীর একটি অ্যাডলার -32 চেকসাম হতে হবে। | 
| G3 | স্বাক্ষরটি অবশ্যই magic,checksumএবংsignatureব্যতীত পুরো ফাইলের সামগ্রীর একটি SHA-1 হ্যাশ হতে হবে। | 
| G4 |     | 
| G5 |     | 
| G6 | endian_tagঅবশ্যই মান থাকতে হবে:ENDIAN_CONSTANTবাREVERSE_ENDIAN_CONSTANT | 
| G7 |  প্রতিটি    | 
| G8 | map_offব্যতীত শিরোনামে সমস্ত অফসেট ক্ষেত্রগুলি অবশ্যই চারটি বাই-সারিবদ্ধ হতে হবে। | 
| G9 | map_offক্ষেত্রটি অবশ্যই শূন্য হতে হবে বা ডেটা বিভাগে নির্দেশ করতে হবে। পরবর্তী ক্ষেত্রে,dataবিভাগ অবশ্যই উপস্থিত থাকতে হবে। | 
| জি 10 | linkকোনওটিই,string_ids,type_ids,proto_ids,field_ids,method_ids,class_defsএবংdataবিভাগগুলিকে অবশ্যই একে অপরকে বা শিরোনামকে ওভারল্যাপ করতে হবে। | 
| জি 11 | যদি কোনও মানচিত্র বিদ্যমান থাকে তবে প্রতিটি মানচিত্রের প্রবেশের অবশ্যই একটি বৈধ প্রকার থাকতে হবে। প্রতিটি প্রকার সর্বাধিক একবারে উপস্থিত হতে পারে। | 
| জি 12 | যদি কোনও মানচিত্র বিদ্যমান থাকে তবে প্রতিটি মানচিত্রের এন্ট্রি অবশ্যই একটি শূন্য-অফসেট এবং আকার থাকতে হবে। অফসেটটি অবশ্যই ফাইলের সংশ্লিষ্ট বিভাগে নির্দেশ করতে হবে (অর্থাত্ একটি string_id_itemঅবশ্যইstring_idsবিভাগে নির্দেশ করতে হবে) এবং আইটেমটির সুস্পষ্ট বা অন্তর্নিহিত আকারটি অবশ্যই বিভাগের প্রকৃত সামগ্রী এবং আকারের সাথে মেলে। | 
| G13 | যদি কোনও মানচিত্র বিদ্যমান থাকে, তবে মানচিত্র এন্ট্রি n+1এর অফসেটটি মানচিত্র এন্ট্রিn plus than size of map entry nবা সমান হতে হবে। এটি অ-ওভারল্যাপিং এন্ট্রি এবং স্বল্প থেকে উচ্চতর ক্রমকে বোঝায়। | 
| জি 14 | নিম্নলিখিত ধরণের এন্ট্রিগুলির অবশ্যই একটি অফসেট থাকতে হবে যা চার-বাইট-সংযুক্ত: string_id_item,type_id_item,proto_id_item,field_id_item,method_id_item,class_def_item,type_list,code_item,annotations_directory_item। | 
| জি 15 |  প্রতিটি   প্রতিটি   রেফারেন্সড  | 
| G16 | প্রতিটি type_id_itemজন্য,descriptor_idxক্ষেত্রটিতে অবশ্যইstring_idsতালিকায় একটি বৈধ রেফারেন্স থাকতে হবে। রেফারেন্সযুক্ত স্ট্রিংটি অবশ্যই একটি বৈধ ধরণের বর্ণনাকারী হতে হবে। | 
| G17 | প্রতিটি proto_id_itemজন্য,shorty_idxক্ষেত্রটিতেstring_idsতালিকায় একটি বৈধ রেফারেন্স থাকতে হবে। রেফারেন্সড স্ট্রিংটি অবশ্যই একটি বৈধ সংক্ষিপ্ত বর্ণনাকারী হতে হবে। এছাড়াও,return_type_idxক্ষেত্রটি অবশ্যইtype_idsবিভাগে একটি বৈধ সূচক হতে হবে এবংparameters_offক্ষেত্রটি অবশ্যই শূন্য হতে হবে বাdataবিভাগে নির্দেশ করে একটি বৈধ অফসেট হতে হবে। যদি শূন্য-শূন্য হয় তবে প্যারামিটার তালিকায় অবশ্যই কোনও শূন্য এন্ট্রি থাকতে হবে না। | 
| জি 18 | প্রতিটি field_id_itemজন্য,class_idxএবংtype_idxক্ষেত্র উভয়ইtype_idsতালিকায় বৈধ সূচক হতে হবে।class_idxদ্বারা রেফারেন্স করা এন্ট্রি অবশ্যই একটি অ-অ্যারে রেফারেন্স টাইপ হতে হবে। তদতিরিক্ত,name_idxক্ষেত্রটি অবশ্যইstring_idsবিভাগে একটি বৈধ রেফারেন্স হতে হবে এবং রেফারেন্সড এন্ট্রির বিষয়বস্তু অবশ্যইMemberNameস্পেসিফিকেশন অনুসারে মানিয়ে নিতে হবে। | 
| G19 | প্রতিটি method_id_itemজন্য,class_idxক্ষেত্রটি অবশ্যইtype_idsবিভাগে একটি বৈধ সূচক হতে হবে এবং রেফারেন্সড এন্ট্রি অবশ্যই একটি অ-অ্যারে রেফারেন্স প্রকার হতে হবে।proto_idক্ষেত্রটি অবশ্যইproto_idsতালিকার একটি বৈধ রেফারেন্স হতে হবে।name_idxক্ষেত্রটি অবশ্যইstring_idsবিভাগে একটি বৈধ রেফারেন্স হতে হবে এবং রেফারেন্সড এন্ট্রির বিষয়বস্তু অবশ্যইMemberNameস্পেসিফিকেশন অনুসারে মানতে হবে। | 
| G20 | প্রতিটি field_id_itemজন্য,class_idxক্ষেত্রটি অবশ্যইtype_idsতালিকার একটি বৈধ সূচক হতে হবে। রেফারেন্সড এন্ট্রি অবশ্যই একটি অ্যারে রেফারেন্স টাইপ হতে হবে। | 
স্ট্যাটিক বাইটকোড সীমাবদ্ধতা
স্ট্যাটিক সীমাবদ্ধতাগুলি বাইটকোডের পৃথক উপাদানগুলির উপর সীমাবদ্ধতা। এগুলি সাধারণত নিয়ন্ত্রণ বা ডেটা-প্রবাহ বিশ্লেষণ কৌশল ব্যবহার না করে পরীক্ষা করা যায়।
| শনাক্তকারী | বর্ণনা | 
|---|---|
| A1 | insnsঅ্যারে অবশ্যই খালি থাকবে না। | 
| A2 | insnsঅ্যারেতে প্রথম অপকোডের অবশ্যই সূচক শূন্য থাকতে হবে। | 
| A3 | insnsঅ্যারেতে অবশ্যই বৈধ ডালভিক অপকোড থাকতে হবে। | 
| A4 | নির্দেশনা n+1এর সূচকটি অবশ্যই নির্দেশnএর সূচককে সমান করে নির্দেশনাnএর দৈর্ঘ্যকে সমান করে, সম্ভাব্য অপারেশনগুলিকে বিবেচনায় নিয়ে। | 
| A5 | insnsঅ্যারেতে শেষ নির্দেশটি অবশ্যই সূচকinsns_size-1এ শেষ করতে হবে। | 
| A6 | সমস্ত gotoএবংif-<kind>লক্ষ্যগুলি একই পদ্ধতির মধ্যে অবশ্যই অপকোড হতে হবে। | 
| A7 | একটি packed-switchনির্দেশের সমস্ত লক্ষ্য অবশ্যই একই পদ্ধতির মধ্যে অপকোড হতে হবে। আকার এবং লক্ষ্যগুলির তালিকা অবশ্যই সামঞ্জস্যপূর্ণ হতে হবে। | 
| A8 | একটি sparse-switchনির্দেশের সমস্ত লক্ষ্য অবশ্যই একই পদ্ধতির মধ্যে অপকোড হতে হবে। সংশ্লিষ্ট টেবিলটি অবশ্যই সামঞ্জস্যপূর্ণ এবং নিম্ন-উচ্চ-উচ্চ বাছাই করা উচিত। | 
| A9 | const-stringএবংconst-string/jumboনির্দেশাবলীরBঅপারেন্ড অবশ্যই স্ট্রিং ধ্রুবক পুলের একটি বৈধ সূচক হতে হবে। | 
| A10 | iget<kind>সি এরCঅপারেন্ড এবংiput<kind>নির্দেশাবলী অবশ্যই ক্ষেত্রের ধ্রুবক পুলের একটি বৈধ সূচক হতে হবে। রেফারেন্সড এন্ট্রি অবশ্যই একটি উদাহরণ ক্ষেত্রের প্রতিনিধিত্ব করতে হবে। | 
| A11 | sget<kind>এরCঅপারেন্ড এবংsput<kind>নির্দেশাবলী অবশ্যই ক্ষেত্রের ধ্রুবক পুলের একটি বৈধ সূচক হতে হবে। রেফারেন্সড এন্ট্রি অবশ্যই একটি স্থির ক্ষেত্রের প্রতিনিধিত্ব করতে হবে। | 
| A12 | invoke-virtual,invoke-super,invoke-directএবংinvoke-staticনির্দেশাবলীরCঅপারেন্ডটি অবশ্যই পদ্ধতি ধ্রুবক পুলের একটি বৈধ সূচক হতে হবে। | 
| A13 | invoke-virtual/rangeBঅপারেন্ড,invoke-super/range,invoke-direct/rangeএবংinvoke-static/rangeনির্দেশাবলী অবশ্যই পদ্ধতি ধ্রুবক পুলের একটি বৈধ সূচক হতে হবে। | 
| A14 | একটি পদ্ধতির নাম যার নাম '<' দিয়ে শুরু হয় কেবল ভিএম দ্বারা স্পষ্টভাবে আহ্বান করা উচিত, কোনও .dexফাইল থেকে উত্পন্ন কোড দ্বারা নয়। একমাত্র ব্যতিক্রম হ'ল উদাহরণ ইনিশিয়ালাইজার, যাinvoke-directদ্বারা আহ্বান করা যেতে পারে। | 
| A15 | invoke-interfaceনির্দেশেরCঅপারেন্ডটি অবশ্যই পদ্ধতি ধ্রুবক পুলের একটি বৈধ সূচক হতে হবে। রেফারেন্সডmethod_idঅবশ্যই একটি ইন্টারফেসের সাথে সম্পর্কিত (কোনও শ্রেণি নয়)। | 
| A16 | invoke-interface/rangeনির্দেশেরBঅপারেন্ডটি অবশ্যই পদ্ধতি ধ্রুবক পুলের একটি বৈধ সূচক হতে হবে। রেফারেন্সডmethod_idঅবশ্যই একটি ইন্টারফেসের সাথে সম্পর্কিত (কোনও শ্রেণি নয়)। | 
| A17 | const-classBঅপারেন্ড,check-cast,new-instanceএবংfilled-new-array/rangeনির্দেশাবলী অবশ্যই ধ্রুবক পুলের মধ্যে একটি বৈধ সূচক হতে হবে। | 
| A18 | instance-of,new-arrayএবংfilled-new-arrayনির্দেশাবলীরCঅপারেন্ডটি অবশ্যই ধ্রুবক পুলের মধ্যে একটি বৈধ সূচক হতে হবে। | 
| A19 | একটি new-arrayনির্দেশাবলী দ্বারা নির্মিত একটি অ্যারের মাত্রা অবশ্যই256এর চেয়ে কম হতে হবে। | 
| A20 | newনির্দেশটি অবশ্যই অ্যারে ক্লাস, ইন্টারফেস বা বিমূর্ত ক্লাসগুলি উল্লেখ করবে না। | 
| A21 | একটি new-arrayনির্দেশাবলী দ্বারা উল্লিখিত প্রকারটি অবশ্যই একটি বৈধ, অ-রেফারেন্স টাইপ হতে হবে। | 
| A22 | একক প্রস্থে (নন-জুটি) ফ্যাশনে একটি নির্দেশাবলী দ্বারা উল্লিখিত সমস্ত রেজিস্টারগুলি অবশ্যই বর্তমান পদ্ধতির জন্য বৈধ হতে হবে। এটি হ'ল, তাদের সূচকগুলি অবশ্যই অ-নেতিবাচক এবং registers_sizeচেয়ে ছোট হতে হবে। | 
| A23 | ডাবল প্রস্থে (জোড়) ফ্যাশনে একটি নির্দেশ দ্বারা উল্লিখিত সমস্ত রেজিস্টারগুলি অবশ্যই বর্তমান পদ্ধতির জন্য বৈধ হতে হবে। অর্থাৎ, তাদের সূচকগুলি অবশ্যই registers_size-1চেয়ে অ-নেতিবাচক এবং ছোট হতে হবে। | 
| A24 | invoke-virtualএবংinvoke-directনির্দেশাবলীরmethod_idঅপারেন্ড অবশ্যই একটি শ্রেণীর অন্তর্ভুক্ত (কোনও ইন্টারফেস নয়)।037সংস্করণটির পূর্বে ডেক্স ফাইলগুলিতে একই অবশ্যইinvoke-superএবংinvoke-staticনির্দেশাবলীর ক্ষেত্রে সত্য হতে হবে। | 
| A25 | invoke-virtual/rangeএবংinvoke-direct/rangeনির্দেশাবলীরmethod_idঅপারেন্ডটি অবশ্যই একটি শ্রেণীর (কোনও ইন্টারফেস নয়) এর অন্তর্ভুক্ত।037সংস্করণটির পূর্বে ডেক্স ফাইলগুলিতে একই অবশ্যইinvoke-super/rangeএবংinvoke-static/rangeনির্দেশাবলীর ক্ষেত্রে সত্য হতে হবে। | 
স্ট্রাকচারাল বাইটকোড সীমাবদ্ধতা
কাঠামোগত সীমাবদ্ধতাগুলি বাইটকোডের বেশ কয়েকটি উপাদানগুলির মধ্যে সম্পর্কের উপর সীমাবদ্ধতা। এগুলি সাধারণত নিয়ন্ত্রণ বা ডেটা-প্রবাহ বিশ্লেষণ কৌশল ব্যবহার না করে পরীক্ষা করা যায় না।
| শনাক্তকারী | বর্ণনা | 
|---|---|
| B1 | আর্গুমেন্টের সংখ্যা এবং প্রকারগুলি (রেজিস্টার এবং তাত্ক্ষণিক মান) অবশ্যই সর্বদা নির্দেশের সাথে মেলে। | 
| B2 | রেজিস্টার জোড়গুলি কখনই ভেঙে দেওয়া উচিত নয়। | 
| B3 | এটি পড়ার আগে একটি রেজিস্টার (বা জুটি) প্রথমে বরাদ্দ করতে হবে। | 
| B4 | একটি invoke-directনির্দেশাবলী অবশ্যই বর্তমান শ্রেণিতে বা এর একটি সুপারক্লাসের মধ্যে একটি উদাহরণ ইনিশিয়ালাইজার বা একটি পদ্ধতি আহ্বান করতে হবে। | 
| B5 | একটি উদাহরণ ইনিশিয়ালাইজারকে অবশ্যই কেবল একটি নিরবচ্ছিন্ন উদাহরণে অনুরোধ করা উচিত। | 
| B6 | উদাহরণ পদ্ধতিগুলি কেবল চালু করা যেতে পারে এবং উদাহরণস্বরূপ ক্ষেত্রগুলি কেবল ইতিমধ্যে প্রাথমিক উদাহরণগুলিতে অ্যাক্সেস করা যেতে পারে। | 
| B7 | একটি new-instanceনির্দেশের ফলাফল ধারণ করে এমন একটি রেজিস্টার অবশ্যই ব্যবহার করা উচিত নয় যদি একইnew-instanceনির্দেশনাটি আবার উদাহরণটি শুরু করার আগে কার্যকর করা হয়। | 
| B8 | কোনও উদাহরণ সদস্যদের অ্যাক্সেস করার আগে একটি উদাহরণ ইনিশিয়ালাইজারকে অবশ্যই অন্য একটি উদাহরণ ইনিশিয়ালাইজার (একই শ্রেণি বা সুপারক্লাস) কল করতে হবে। ব্যতিক্রমগুলি অ-অন্তর্নিহিত উদাহরণ ক্ষেত্রগুলি, যা অন্য একটি ইনিশিয়ালাইজারকে কল করার আগে এবং সাধারণভাবে Objectক্লাসকে বরাদ্দ করা যেতে পারে। | 
| B9 | সমস্ত প্রকৃত পদ্ধতি যুক্তি অবশ্যই তাদের নিজ নিজ আনুষ্ঠানিক যুক্তিগুলির সাথে অ্যাসাইনমেন্ট-সামঞ্জস্যপূর্ণ হতে হবে। | 
| B10 | প্রতিটি উদাহরণ পদ্ধতির অনুরোধের জন্য, প্রকৃত উদাহরণটি অবশ্যই নির্দেশে বর্ণিত শ্রেণি বা ইন্টারফেসের সাথে অ্যাসাইনমেন্ট-সামঞ্জস্যপূর্ণ হতে হবে। | 
| B11 | একটি return<kind>নির্দেশ অবশ্যই তার পদ্ধতির রিটার্ন ধরণের সাথে মেলে। | 
| B12 | কোনও সুপারক্লাসের সুরক্ষিত সদস্যদের অ্যাক্সেস করার সময়, উদাহরণটি অ্যাক্সেস করা হচ্ছে এমন প্রকৃত ধরণটি অবশ্যই বর্তমান শ্রেণি বা এর একটি সাবক্লাস হতে হবে। | 
| B13 | স্ট্যাটিক ক্ষেত্রে সঞ্চিত মানের ধরণটি অবশ্যই অ্যাসাইনমেন্ট-সামঞ্জস্যপূর্ণ বা ক্ষেত্রের ধরণের সাথে রূপান্তরযোগ্য হতে হবে। | 
| B14 | ক্ষেত্রের মধ্যে সঞ্চিত মানের ধরণটি অবশ্যই অ্যাসাইনমেন্ট-সামঞ্জস্যপূর্ণ বা ক্ষেত্রের ধরণের সাথে রূপান্তরযোগ্য হতে হবে। | 
| B15 | একটি অ্যারেতে সঞ্চিত প্রতিটি মানের ধরণ অবশ্যই অ্যারের উপাদানগুলির সাথে অ্যাসাইনমেন্ট-সামঞ্জস্যপূর্ণ হতে হবে। | 
| B16 | একটি throwনির্দেশেরAঅপারেন্ড অবশ্যইjava.lang.Throwableসাথে অ্যাসাইনমেন্ট-সামঞ্জস্যপূর্ণ হতে হবে। | 
| B17 | কোনও পদ্ধতির সর্বশেষ পৌঁছনীয় নির্দেশটি অবশ্যই পিছনের দিকে gotoবা শাখা, একটিreturnবা একটিthrowনির্দেশ হতে হবে। নীচেinsnsঅ্যারে রেখে যাওয়া সম্ভব হবে না। | 
| B18 | প্রাক্তন রেজিস্টার জুটির স্বীকৃত অর্ধেকটি অন্য কোনও নির্দেশের মাধ্যমে পুনরায় প্রবর্তিত না হওয়া পর্যন্ত পড়তে পারে না (অবৈধ হিসাবে বিবেচিত হয়)। | 
| B19 | একটি move-result<kind>নির্দেশ অবশ্যই অবিলম্বে (insnsঅ্যারেতে) একটিinvoke-<kind>নির্দেশের মাধ্যমে অবশ্যই আগে থাকতে হবে। একমাত্র ব্যতিক্রম হ'লmove-result-objectনির্দেশনা, যাfilled-new-arrayনির্দেশের আগেও হতে পারে। | 
| B20 | একটি move-result<kind>নির্দেশনা অবশ্যই অবিলম্বে (প্রকৃত নিয়ন্ত্রণ প্রবাহে) একটি মিলে যাওয়াreturn-<kind>নির্দেশের মাধ্যমে (এটি অবশ্যই লাফিয়ে উঠতে হবে না)। একমাত্র ব্যতিক্রম হ'লmove-result-objectনির্দেশনা, যাfilled-new-arrayনির্দেশের আগেও হতে পারে। | 
| B21 | একটি move-exceptionনির্দেশ অবশ্যই একটি ব্যতিক্রম হ্যান্ডলারের প্রথম নির্দেশ হিসাবে উপস্থিত হতে হবে। | 
| B22 | packed-switch-data,sparse-switch-dataএবংfill-array-dataসিউডো-ইনস্ট্রাকশনগুলি নিয়ন্ত্রণ প্রবাহের মাধ্যমে পৌঁছানোর যোগ্য হওয়া উচিত নয়। |