ডালভিক এক্সিকিউটেবল ইন্সট্রাকশন ফরম্যাট

এই পৃষ্ঠাটি ডালভিক এক্সিকিউটেবল (ডিইএক্স) ফরম্যাট এবং ডালভিক বাইটকোড দ্বারা ব্যবহৃত নির্দেশ বিন্যাস তালিকাভুক্ত করে। এটি বাইটকোড রেফারেন্স নথির সাথে একত্রে ব্যবহার করা বোঝানো হয়েছে।

বিটওয়াইজ বর্ণনা

বিন্যাস টেবিলের প্রথম কলামটি বিন্যাসের বিটওয়াইজ লেআউট তালিকাভুক্ত করে। এটি এক বা একাধিক স্থান-বিচ্ছিন্ন "শব্দ" নিয়ে গঠিত যার প্রতিটি একটি 16-বিট কোড ইউনিট বর্ণনা করে। একটি শব্দের প্রতিটি অক্ষর চারটি বিটের প্রতিনিধিত্ব করে, উচ্চ বিট থেকে নিচু পর্যন্ত পড়া হয়, উল্লম্ব বারগুলি (" | ") পড়তে সাহায্য করার জন্য ছেদ করা হয়। " A " থেকে ক্রমানুসারে বড় হাতের অক্ষরগুলি বিন্যাসের মধ্যে ক্ষেত্রগুলি নির্দেশ করতে ব্যবহৃত হয় (যা পরে সিনট্যাক্স কলাম দ্বারা আরও সংজ্ঞায়িত করা হয়)। " op " শব্দটি বিন্যাসের মধ্যে একটি আট-বিট অপকোডের অবস্থান নির্দেশ করতে ব্যবহৃত হয়। একটি স্ল্যাশড শূন্য (" Ø ") নির্দেশ করতে ব্যবহৃত হয় যে নির্দেশিত অবস্থানে সমস্ত বিট শূন্য হতে হবে।

বেশিরভাগ ক্ষেত্রে, অক্ষরগুলি পূর্ববর্তী কোড ইউনিট থেকে পরবর্তী কোড ইউনিটে এবং একটি কোড ইউনিটের মধ্যে নিম্ন-ক্রম থেকে উচ্চ-অর্ডারে চলে যায়। যাইহোক, এই সাধারণ নিয়মের কিছু ব্যতিক্রম রয়েছে, যেগুলি বিভিন্ন নির্দেশ বিন্যাসে অনুরূপ-অর্থের অংশগুলির নামকরণ একই হওয়ার জন্য করা হয়। এই কেসগুলি বিন্যাসের বর্ণনায় স্পষ্টভাবে উল্লেখ করা হয়েছে।

উদাহরণস্বরূপ, " B|A| op CCCC " বিন্যাসটি নির্দেশ করে যে বিন্যাসে দুটি 16-বিট কোড ইউনিট রয়েছে। প্রথম শব্দটি নিম্ন আট বিটে অপকোড এবং উচ্চ আট বিটে চার-বিট মানের একটি জোড়া নিয়ে গঠিত; এবং দ্বিতীয় শব্দটি একটি একক 16-বিট মান নিয়ে গঠিত।

আইডি ফরম্যাট করুন

বিন্যাস টেবিলের দ্বিতীয় কলামটি বিন্যাসের জন্য সংক্ষিপ্ত শনাক্তকারীকে নির্দেশ করে, যা অন্যান্য নথিতে এবং বিন্যাস সনাক্ত করতে কোডে ব্যবহৃত হয়।

বেশিরভাগ ফরম্যাট আইডিতে তিনটি অক্ষর থাকে, দুটি সংখ্যার পরে একটি অক্ষর থাকে। প্রথম সংখ্যাটি বিন্যাসে 16-বিট কোড ইউনিটের সংখ্যা নির্দেশ করে। দ্বিতীয় সংখ্যাটি নির্দেশ করে যে বিন্যাসে সর্বাধিক কতগুলি নিবন্ধন রয়েছে (সর্বোচ্চ, যেহেতু কিছু বিন্যাসে একটি পরিবর্তনশীল সংখ্যার রেজিস্টার মিটমাট করতে পারে), বিশেষ পদবি " r " নির্দেশ করে যে রেজিস্টারের একটি পরিসর এনকোড করা হয়েছে। চূড়ান্ত অক্ষর আধা-স্মরণীয়ভাবে বিন্যাস দ্বারা এনকোড করা কোনো অতিরিক্ত ডেটার ধরন নির্দেশ করে। উদাহরণস্বরূপ, ফরম্যাট " 21t " দৈর্ঘ্য দুই, একটি রেজিস্টার রেফারেন্স ধারণ করে, এবং অতিরিক্ত একটি শাখা লক্ষ্য ধারণ করে।

প্রস্তাবিত স্ট্যাটিক লিঙ্কিং ফরম্যাটে একটি অতিরিক্ত " s " প্রত্যয় রয়েছে, যা তাদের মোট চারটি অক্ষর তৈরি করে। একইভাবে, প্রস্তাবিত "ইনলাইন" লিঙ্কিং বিন্যাসে একটি অতিরিক্ত " i " প্রত্যয় রয়েছে৷ (এই প্রেক্ষাপটে, ইনলাইন লিঙ্কিং হল স্ট্যাটিক লিঙ্কিং এর মত, একটি মেশিনের বাস্তবায়নের সাথে আরও সরাসরি সম্পর্ক ছাড়া।) অবশেষে, একটি দম্পতি অডবল প্রস্তাবিত ফর্ম্যাট (যেমন, " 20bc ") দুটি টুকরো ডেটা অন্তর্ভুক্ত করে যা উভয়ই এর ফর্ম্যাট আইডিতে উপস্থাপিত হয় .

টাইপকোড অক্ষরের সম্পূর্ণ তালিকা নিম্নরূপ। নোট করুন যে ফর্ম্যাটের উপর নির্ভর করে কিছু ফর্মের বিভিন্ন আকার রয়েছে:

স্মৃতিসংক্রান্ত বিট সাইজ অর্থ
8 অবিলম্বে স্বাক্ষরিত byte
16, 32 তাৎক্ষণিক পুল সূচক
16 ইন্টার এফ ace ধ্রুবক (শুধুমাত্র স্ট্যাটিকলি লিঙ্কযুক্ত ফরম্যাটে ব্যবহৃত)
16 অবিলম্বে স্বাক্ষরিত h এ (একটি 32- বা 64-বিট মানের উচ্চ-অর্ডার বিট; লো-অর্ডার বিটগুলি সবই 0 )
i 32 অবিলম্বে স্বাক্ষরিত int , বা 32-বিট ফ্লোট
l 64 অবিলম্বে স্বাক্ষরিত long , বা 64-বিট ডবল
মি 16 m ethod ধ্রুবক (শুধুমাত্র স্ট্যাটিকভাবে লিঙ্কযুক্ত বিন্যাসে ব্যবহৃত)
n 4 অবিলম্বে স্বাক্ষরিত n ibble
s 16 অবিলম্বে স্বাক্ষরিত s hort
t 8, 16, 32 শাখা টি arget
এক্স 0 অতিরিক্ত তথ্য নেই

বাক্য গঠন

বিন্যাস টেবিলের তৃতীয় কলাম নির্দেশিত বিন্যাস ব্যবহার করে নির্দেশাবলীর জন্য মানব-ভিত্তিক বাক্য গঠন নির্দেশ করে। প্রতিটি নির্দেশনা নামের অপকোড দিয়ে শুরু হয় এবং ঐচ্ছিকভাবে এক বা একাধিক আর্গুমেন্ট দ্বারা অনুসরণ করা হয়, নিজেদের কমা দিয়ে আলাদা করা হয়।

যেখানেই একটি আর্গুমেন্ট প্রথম কলাম থেকে একটি ক্ষেত্র নির্দেশ করে, সেই ক্ষেত্রের জন্য অক্ষরটি সিনট্যাক্সে নির্দেশিত হয়, ক্ষেত্রের প্রতিটি চারটি বিটের জন্য একবার পুনরাবৃত্তি করা হয়। উদাহরণ স্বরূপ, প্রথম কলামে " BB " লেবেলযুক্ত একটি আট-বিট ক্ষেত্রটিকেও সিনট্যাক্স কলামে " BB " লেবেল করা হবে।

যে আর্গুমেন্টে একটি রেজিস্টারের নাম " v X " ফর্ম থাকে৷ (নন-ভার্চুয়াল) আর্কিটেকচারের সাথে বিরোধিতা এড়াতে আরও সাধারণ " r " এর পরিবর্তে " v " উপসর্গটি বেছে নেওয়া হয়েছিল যার উপর ডালভিক এক্সিকিউটেবল ফরম্যাট প্রয়োগ করা যেতে পারে যা নিজেদের রেজিস্টারের জন্য " r " উপসর্গ ব্যবহার করে। (অর্থাৎ, এই সিদ্ধান্তটি ভার্চুয়াল এবং বাস্তব উভয় নিবন্ধন সম্পর্কে কথা বলা সম্ভব করে তোলে বিনা কারণে।)

আর্গুমেন্ট যা একটি আক্ষরিক মান নির্দেশ করে তার ফর্ম " #+ X " আছে। কিছু বিন্যাস আক্ষরিক নির্দেশ করে যেগুলির উচ্চ-অর্ডার বিটে কেবলমাত্র শূন্য বিট নেই; এইগুলির জন্য, শূন্যগুলিকে সিনট্যাক্সে স্পষ্টভাবে উপস্থাপিত করা হয়, যদিও সেগুলি বিটওয়াইজ উপস্থাপনায় প্রদর্শিত হয় না।

আর্গুমেন্ট যা একটি আপেক্ষিক নির্দেশনা ঠিকানা অফসেট নির্দেশ করে তার ফর্ম " + X " আছে।

যে আর্গুমেন্টগুলি একটি আক্ষরিক ধ্রুবক পুল সূচক নির্দেশ করে তার ফর্ম " kind @ X " আছে, যেখানে " kind " নির্দেশ করে কোন ধ্রুবক পুলকে উল্লেখ করা হচ্ছে৷ এই ধরনের একটি বিন্যাস ব্যবহার করে এমন প্রতিটি অপকোড স্পষ্টভাবে শুধুমাত্র এক ধরনের ধ্রুবকের অনুমতি দেয়; চিঠিপত্র বের করতে opcode রেফারেন্স দেখুন। ধ্রুবক পুলের প্রকারগুলি হল " string " (স্ট্রিং পুল সূচক), " type " (টাইপ পুল সূচক), " field " (ফিল্ড পুল সূচক), " meth " (পদ্ধতি পুল সূচক), এবং " site " (কল সাইট সূচক) )

ধ্রুবক পুল সূচকের উপস্থাপনার অনুরূপ, প্রস্তাবিত (ঐচ্ছিক) ফর্মগুলিও রয়েছে যা পূর্ব লিঙ্কযুক্ত অফসেট বা সূচকগুলি নির্দেশ করে। প্রস্তাবিত প্রিলিঙ্ক করা মান দুই ধরনের আছে: vtable অফসেট (" vtaboff " হিসেবে নির্দেশিত) এবং ফিল্ড অফসেট (" fieldoff " হিসেবে নির্দেশিত)।

যে ক্ষেত্রে একটি বিন্যাস মান স্পষ্টভাবে সিনট্যাক্সের অংশ নয় কিন্তু পরিবর্তে একটি বৈকল্পিক বাছাই করে, প্রতিটি বৈকল্পিক চিঠিপত্র নির্দেশ করতে উপসর্গ " [ X = N ] " (যেমন, " [A=2] ") সহ তালিকাভুক্ত করা হয় .

বিন্যাস

বিন্যাস আইডি বাক্য গঠন উল্লেখযোগ্য Opcodes আচ্ছাদিত
N/A 00x N/A অব্যবহৃত অপকোডের জন্য ব্যবহৃত ছদ্ম বিন্যাস; একটি ব্রেকপয়েন্ট অপকোডের জন্য নামমাত্র বিন্যাস হিসাবে ব্যবহারের জন্য প্রস্তাবিত৷
ØØ| অপ 10x op
বি|এ| অপ 12x op vA, vB
11n op vA, #+B
এএ| অপ 11x op vAA
10টি op +AA যাও
ØØ| op AAAA 20t op +AAAA goto/16
এএ| op BBBB 20bc op AA, kind@BBBB স্ট্যাটিকভাবে নির্ধারিত যাচাইকরণ ত্রুটির জন্য প্রস্তাবিত বিন্যাস; A হল ত্রুটির ধরন এবং B হল একটি টাইপ-উপযুক্ত টেবিলের একটি সূচী (যেমন, কোনো-না-এমন-পদ্ধতি ত্রুটির জন্য পদ্ধতির উল্লেখ)
এএ| op BBBB 22x op vAA, vBBBB
21টি op vAA, +BBBB
21 সে op vAA, #+BBBB
21 ঘন্টা op vAA, #+BBBB0000
op vAA, #+BBBB000000000000
21 গ op vAA, টাইপ@BBBB
op vAA, field@BBBB
op vAA, method_handle@BBBB
op vAA, proto@BBBB
op vAA, string@BBBB
চেক-কাস্ট
const-শ্রেণী
const-method-হ্যান্ডেল
const- পদ্ধতি- প্রকার
const-স্ট্রিং
এএ| op CC|BB 23x op vAA, vBB, vCC
22 খ op vAA, vBB, #+CC
বি|এ| op CCCC 22t op vA, vB, +CCCC
22 সে op vA, vB, #+CCCC
22 গ op vA, vB, type@CCCC
op vA, vB, field@CCCC
উদাহরণস্বরুপ
22cs op vA, vB, fieldoff@CCCC ফরম্যাট 22c এর স্ট্যাটিকালি লিঙ্ক ফিল্ড অ্যাক্সেস নির্দেশাবলীর জন্য প্রস্তাবিত বিন্যাস
ØØ| op AAAA lo AAAA হাই 30t op +AAAAAAAA goto/32
ØØ| op AAAA BBBB 32x op vAAAA, vBBBB
এএ| op BBBB lo BBBB হাই 31i op vAA, #+BBBBBBBB
31টি op vAA, +BBBBBBBB
31c op vAA, স্ট্রিং@BBBBBBBB const-স্ট্রিং/জাম্বো
A|G| op BBBB F|E|D|C 35 গ [ A=5 ] op {vC, vD, vE, vF, vG}, meth@BBBB
[ A=5 ] op {vC, vD, vE, vF, vG}, site@BBBB
[ A=5 ] op {vC, vD, vE, vF, vG}, type@BBBB
[ A=4 ] op {vC, vD, vE, vF}, kind @BBBB
[ A=3 ] op {vC, vD, vE}, kind @BBBB
[ A=2 ] op {vC, vD}, kind @BBBB
[ A=1 ] op {vC}, kind @BBBB
[ A=0 ] op {}, kind @BBBB

এখানে অক্ষরে অস্বাভাবিক পছন্দ গণনা করার ইচ্ছাকে প্রতিফলিত করে এবং রেফারেন্স সূচকে 3rc বিন্যাসের মতো একই লেবেল রয়েছে।

35ms [ A=5 ] op {vC, vD, vE, vF, vG}, vtaboff@BBBB
[ A=4 ] op {vC, vD, vE, vF}, vtaboff@BBBB
[ A=3 ] op {vC, vD, vE}, vtaboff@BBBB
[ A=2 ] op {vC, vD}, vtaboff@BBBB
[ A=1 ] op {vC}, vtaboff@BBBB

এখানে অক্ষরে অস্বাভাবিক পছন্দ গণনা করার ইচ্ছাকে প্রতিফলিত করে এবং রেফারেন্স সূচকে 3rms বিন্যাসের মতো একই লেবেল রয়েছে।

35c বিন্যাসের স্ট্যাটিকালি লিঙ্কড invoke-virtual এবং invoke-super নির্দেশের জন্য প্রস্তাবিত ফর্ম্যাট
35 মাইল [ A=5 ] op {vC, vD, vE, vF, vG}, inline@BBBB
[ A=4 ] op {vC, vD, vE, vF}, inline@BBBB
[ A=3 ] op {vC, vD, vE}, inline@BBBB
[ A=2 ] op {vC, vD}, inline@BBBB
[ A=1 ] op {vC}, inline@BBBB

এখানে অক্ষরের অস্বাভাবিক পছন্দ গণনা করার ইচ্ছাকে প্রতিফলিত করে এবং রেফারেন্স সূচকে 3rmi বিন্যাসে একই লেবেল রয়েছে।

ফর্ম্যাট 35c-এর ইনলাইন লিঙ্কড invoke-static এবং invoke-virtual নির্দেশাবলীর জন্য প্রস্তাবিত ফর্ম্যাট
এএ| op BBBB CCCC 3rc op {vCCCC .. vNNNN}, meth@BBBB
op {vCCCC .. vNNNN}, site@BBBB
op {vCCCC .. vNNNN}, type@BBBB

যেখানে NNNN = CCCC+AA-1 , অর্থাৎ A গণনা 0..255 নির্ধারণ করে এবং C প্রথম নিবন্ধন নির্ধারণ করে

3rms op {vCCCC .. vNNNN}, vtaboff@BBBB

যেখানে NNNN = CCCC+AA-1 , অর্থাৎ A গণনা 0..255 নির্ধারণ করে এবং C প্রথম নিবন্ধন নির্ধারণ করে

3rc বিন্যাসের স্ট্যাটিকালি লিঙ্কড invoke-virtual এবং invoke-super নির্দেশের জন্য প্রস্তাবিত ফর্ম্যাট
3rmi op {vCCCC .. vNNNN}, inline@BBBB

যেখানে NNNN = CCCC+AA-1 , অর্থাৎ A গণনা 0..255 নির্ধারণ করে এবং C প্রথম নিবন্ধন নির্ধারণ করে

ইনলাইন লিঙ্কড invoke-static এবং invoke-virtual ফরম্যাট 3rc ফরম্যাটের জন্য প্রস্তাবিত ফর্ম্যাট
A|G| op BBBB F|E|D|C HHHH 45cc [ A=5 ] op {vC, vD, vE, vF, vG}, meth@BBBB, proto@HHHH
[ A=4 ] op {vC, vD, vE, vF}, meth@BBBB, proto@HHHH
[ A=3 ] op {vC, vD, vE}, meth@BBBB, proto@HHHH
[ A=2 ] op {vC, vD}, meth@BBBB, proto@HHHH
[ A=1 ] op {vC}, meth@BBBB, proto@HHHH
invoke-পলিমরফিক
এএ| op BBBB CCCC HHHH 4আরসিসি op> {vCCCC .. vNNNN}, meth@BBBB, proto@HHHH

যেখানে NNNN = CCCC+AA-1 , অর্থাৎ A গণনা 0..255 নির্ধারণ করে এবং C প্রথম নিবন্ধন নির্ধারণ করে

invoke-polymorphic/range
এএ| op BBBB lo BBBB BBBB BBBB হাই 51l op vAA, #+BBBBBBBBBBBBBBBB const-wide