বিআইওএস প্রোগ্রাম লেখার জন্য কোন প্রোগ্রামিং ভাষা ব্যবহার করা হয়?


65

আমি যেমন বুঝতে পেরেছি, রমে থাকা বিআইওএস কোড / বিটস্ট্রিমটি জেনেরিক হওয়া উচিত (একাধিক সিপিইউ টাইপ বা আইএসএ পাশাপাশি কাজ করা)। এছাড়াও, আমি ওয়েবে উল্লেখ করেছি যে এর কোডটি ফেলে দেওয়া (এবং এটি "বিচ্ছিন্ন" করা) সম্ভব "

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

এটির কোনও অভ্যন্তরীণ প্রসেসর থাকতে পারে?



39
ক্রস পোস্টিং যথেষ্ট খারাপ, তবে এটি উভয় সংস্করণে হট নেটওয়ার্ক প্রশ্নগুলিতে শেষ হয়ে গেলে, এটি কেবল ফ্যাকাশে ছাড়িয়ে গেছে ...
ম্যাসন হুইলার

8
"রমটিতে থাকা BIOS কোড / বিটস্ট্রিমটি জেনেরিক হওয়া উচিত (একাধিক সিপিইউ টাইপ বা আইএসএ পাশাপাশি কাজ করা উচিত)"। - আমি এমন কোনও বায়োওএসের কথা শুনিনি যা একাধিক আইএসএ নিয়ে কাজ করে। আপনার কি উদাহরণ আছে?
chx

6
As I understand, the BIOS code/bitstream that is held in the ROM should be generic (work alongside with multiple CPU types or ISAs). আমি "না, কেবল বিপরীতে"
বলব

11
এটি "কম্পিউটারগুলি কীভাবে কাজ করে?" হিসাবে সাধারণভাবে কোনও প্রশ্নের অনুলিপিও নয়। দুপ হিসাবে বন্ধ করবেন না দয়া করে।
আন্দ্রেস এফ।

উত্তর:


103

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

বায়োসগুলি ইতিমধ্যে নব্বইয়ের দশকের গোড়ার দিকে প্রাথমিকভাবে সিটিতে লেখা হয়েছিল। (আমি 90% সেন্টিগ্রেডে বিআইওএস লিখেছিলাম, নব্বইয়ের দশকের গোড়ার দিকে 10% অ্যাসেমব্লিং।)

এই দিকটিতে যা ব্যাপকভাবে সহায়তা করেছে তা হ'ল:

  • সি লাইব্রেরিগুলি একটি নির্দিষ্ট আর্কিটেকচারকে লক্ষ্য করে এবং সেই স্থাপত্যের অদ্ভুততাগুলি মোকাবেলার জন্য ফাংশন অন্তর্ভুক্ত করে, উদাহরণস্বরূপ, x86 আর্কিটেকচারের I / O পোর্টগুলিতে / থেকে বাইটগুলি পড়ার / লেখার ফাংশনগুলি। মাইক্রোসফ্ট সি সর্বদা সেই ধরণের স্টাফের জন্য গ্রন্থাগার ফাংশন সরবরাহ করে।

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

আজকাল আমি ধরে নেব যে BIOS এর বেশিরভাগটি সি ++ তে লেখা হয়, যদি কোনও উচ্চ স্তরের ভাষায় না হয়।

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

আমরা সমাবেশের চেয়ে উচ্চ স্তরের ভাষায় বায়োসগুলি লেখার কারণ হ'ল এগুলিকে এইভাবে লেখা সহজ, এগুলি নয় কারণ তাদের সত্যই বহনযোগ্য হতে হবে।


7
হ্যাঁ. কখনও কখনও আপনার এমনকি মাদারবোর্ডটি কেবল একটি নির্দিষ্ট সিপিইউ আর্কিটেকচারের সাথেই আবদ্ধ হতে পারে না, তবে কোনও নির্দিষ্ট সিপিইউ বিক্রেতার কাছেও আবদ্ধ থাকতে পারে। আজকাল আপনি একটি এক্স 86 মাদারবোর্ড কিনতে পারেন যা কেবলমাত্র ইন্টেল x86 সিপিইউগুলির সাথে সামঞ্জস্যপূর্ণ, বা একটি এক্স 86 মাদারবোর্ড যা কেবলমাত্র এএমডি x86 সিপিইউগুলির সাথে সামঞ্জস্যপূর্ণ। এই মাদারবোর্ডগুলিতে থাকা বিআইওএস একটি বৃহত্তর ডিগ্রীর সাথে সমান হবে, কারণ উভয় ক্ষেত্রেই সিপিইউ x86 নির্দেশিকা সেটটি বোঝে, এবং বেশিরভাগ পেরিফেরিয়ালগুলির মধ্যে পার্থক্য রয়েছে, যার জন্য বিআইওএসকে অ্যাকাউন্ট করতে হবে।
মাইক নাকিস

4
@ রিফ্লেকশন শারীরিকভাবে মাদারবোর্ড দেখতে কেমন তা নিবিড়ভাবে দেখুন। সিপিইউ সকেটের একটি নির্দিষ্ট পিনের ব্যবস্থা থাকবে যা এটি গ্রহণ করে এমন সিপিইউগুলির পরিবারগুলির সাথে নির্দিষ্ট। আপনি শারীরিকভাবে কোনও এএমডি
ওপ্টারন

14
"BIOS" শব্দটি কোনও পিসির "বেসিক ইনপুট / আউটপুট সিস্টেম" বোঝায়, সুতরাং, BIOS থাকা একটি x86 সিপিইউ বোঝায়। আইএ 64৪ সিস্টেমগুলিতে একটি বিআইওএসের পরিবর্তে একটি ইএফআই রয়েছে, পাওয়ারপিসি সিস্টেমগুলিতে একটি ওপেন ফার্মওয়্যার সিস্টেম বা মালিকানাধীন এক থাকতে পারে, স্পার্ক সিস্টেমগুলিতে অফ ডাব্লু (বা বরং ওপেন বুট) থাকতে পারে, ওএলপিসি এক্স0 একটি এক্স ৮86-ভিত্তিক সিস্টেম যা অফডাব্লু ব্যবহার করে। এমনকি পিসিগুলিও আর বিআইওএস ব্যবহার করে না, তারা (ইউ) ইএফআইতে স্যুইচ করেছে। OB / OFW আকর্ষণীয়, কারণ এটি কেবল বহনযোগ্য নয় ক্রস-প্ল্যাটফর্মের জন্য ডিজাইন করা হয়েছে। OFW ড্রাইভাররা যে কোনও OFW সিস্টেমে কাজ করবে , তারা সিপিইউ আইএসএ নির্বিশেষে "লিখন উইন রান এনিওরিও" are
জার্গ ডব্লু মিট্টাগ

14
"আজকাল আমি ধরে নেব যে বেশিরভাগ বিআইওএস সি ++ তে লিখিত হয়েছে" আমি অগত্যা ধরেই নেব না যে, এটি সত্য হতে পারে তবে আমি সেই শিল্পে কাজ করি এবং অবশ্যই অনেকগুলি বুট লোডার সরল সিতে লেখা হয় The স্টাফগুলির প্রায়শই "ওল্ড গার্ড" থাকে এবং সি ++ তে এখনও সম্পূর্ণ বিশ্বাস না করে।
স্যাম

6
@ টমডওয়ারজানস্কি: প্রযুক্তিগতভাবে বিআইওএস নয় (যা কেবলমাত্র পুরাতন 1981 পিসি-স্টাফকে বোঝায়), আইইইই -1275 ওপেন ফার্মওয়্যারের অনেকগুলি বাস্তবায়ন (যা স্পার্কে বিআইওএস হিসাবে একই ভূমিকার জন্য ব্যবহৃত হয়, পাওয়ারপিসি সাধারণ হার্ডওয়্যার রেফারেন্স প্ল্যাটফর্ম (যেমন পাওয়ারম্যাক, পাওয়ারবুক), 100 $ ল্যাপটপ ওএলপিসি এক্স0-1) অ্যাসেম্বলি / সি ব্যতীত অন্য ভাষায় লিখিত হয়। OpenBoot , ওপেন ফার্মওয়্যার , OpenBIOS সমস্ত কিছু ...
Jörg ডব্লিউ Mittag

11

তত্ত্বের ক্ষেত্রে কেউ যে কোনও ভাষায় বিআইওএস লিখতে পারেন, আধুনিক বাস্তবতা সর্বাধিক বিআইওএস অ্যাসেম্বলি, সি বা দুটির সংমিশ্রণ ব্যবহার করে রচিত

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

বেশিরভাগ OEMs আমেরিকান মেগাট্রেন্ডস এবং ফিনিক্স টেকোলজিসের মতো সংস্থাগুলির মালিকানাধীন, জেনেরিক BIOS বাস্তবায়ন বাড়িয়ে একটি বায়োএস বাস্তবায়ন করে । (আপনি সম্ভবত কম্পিউটারের প্রথম বুট স্ক্রিনে প্রদর্শিত সেই সংস্থাগুলির মধ্যে একটি দেখেছেন)) এই বাস্তবায়নগুলির উত্স কোডটি সর্বজনীনভাবে উপলভ্য নয়, তবে এর কয়েকটি ফাঁস হয়েছে। আমি এর সাথে সরাসরি সি এবং সমাবেশের উত্স কোডের সাথে লিঙ্ক করতে চাই না, তবে ইন্টারনেটে এমন জায়গাগুলি রয়েছে যেখানে এই উত্স কোডটি উঁকি দেওয়া যত্নশীলদের জন্য আলোচনা করা হয়।

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

মূল প্রশ্নে ফিরে যাওয়া, দেশীয় মেশিন কোড তৈরি করার প্রয়োজনীয়তার কারণে, একটি বায়োস একটি স্থানীয় মেশিন কোড সংকলক দ্বারা সমর্থিত একটি প্রোগ্রামিং ভাষায় প্রয়োগ করতে হবে । যদিও এরকম অনেকগুলি ভাষা রয়েছে এবং আমি নিশ্চিত যে কয়েক দশক ধরে বেশ কয়েকটি ভাষা পরীক্ষামূলকভাবে ব্যবহৃত হয়েছে, প্রতিটি উন্মুক্ত বিআইওএস বাস্তবায়ন আমি বিশেষত সি এবং / বা সমাবেশের সংমিশ্রণের উপর নির্ভর করে খুঁজে পেতে সক্ষম হয়েছি। ওপেন sourced বায়োস বাস্তবায়নের আমি এই উপসংহার গঠনের দিকে তাকিয়ে অন্তর্ভুক্ত OpenBIOS , tinyBIOS , coreboot , ইন্টেল বায়োস এবং Libreboot। আমি কয়েকটি খুব পুরানো বিআইওএস বাস্তবায়নও দেখেছি যা আজ প্রাসঙ্গিক নয় তবে সি এবং / বা সমাবেশ বিধিও মেনে চলেছে।

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

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

অবশ্যই BIOS লেখার জন্য শখের প্রকল্প রয়েছে এবং থাকবে। এগুলিও এখন পর্যন্ত সি এবং / অথবা অ্যাসেমব্লিকে বেছে নিচ্ছে বলে মনে হচ্ছে। সম্ভবত একদিন অন্যান্য প্রযুক্তি ব্যবহার করা হবে। কিন্তু আজ, পছন্দটি ভাল সংজ্ঞাযুক্ত।


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

1
@ টনি এটি সঠিক আমি আরও কিছুটা পরিষ্কার হওয়ার জন্য "সরাসরি বা মধ্যবর্তী-লী ব্যাখ্যা" যুক্ত করেছি।

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

1
@Tonny বাস্তবিক C # এর নেটিভ কোডে প্রনয়ন msdn.microsoft.com/en-us/vstudio/dotnetnative.aspx তাই এটি দুর্বল / গতিশীল ভাষায় তালিকায় এটি দেখতে অদ্ভুত।
ডেন

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

4

কম্পিউটারের জন্য আসল BIOS কিছু ভাষায় (সম্ভবত সি বা অ্যাসেমব্লিতে) লেখা হবে যা আর্কিটেকচার নির্ভর নির্ভর বাইনারি কোডে সংকলিত; এই কোডটি অন্য কোনও আর্কিটেকচারে চলতে পারে না (এবং তাত্ক্ষণিকভাবে এটির দরকার নেই, কারণ এটি যে মেশিনটি প্রেরণ করা হয়েছে এটির জন্য এটি ইতিমধ্যে অত্যন্ত নির্দিষ্ট)।

তবে আপনি সম্ভবত জিপিইউ বিকল্প রমের জন্য "ভিডিও বিআইওএস" এর মতো অপশন রমগুলি (যা কখনও কখনও বিআইওএসও বলা হয়) সম্পর্কে ভাবছেন ?

লিগ্যাসি বিআইওএস সুসংগত বিকল্প রমগুলির জন্য, তারা সম্ভবত আইএসএ নির্ভরশীল এক্সিকিউটেবল কোড হবে (আবার কোনও ভাষা দ্বারা উত্পন্ন যা পছন্দসই আর্কিটেকচারকে লক্ষ্য করে সংকলন করা যায়); পিসিআই একাধিক আইএসএর কোড সহ মঞ্জুরি দেয় এবং বুট প্রক্রিয়া চলাকালীন হোস্টকে উপযুক্ত বাইনারি চিত্র নির্বাচন করতে দেয়।

ইউইএফআই সামঞ্জস্যপূর্ণ বিকল্প রমগুলির জন্য, একটি আর্কিটেকচার-স্বতন্ত্র বাইট কোড ফর্ম্যাটও রয়েছে যা বিভিন্ন আর্কিটেকচারে চালানো যেতে পারে তবে আইএসএ নির্ভর নির্ভর কোডটি এখনও ব্যবহার করা যেতে পারে।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.