অভ্যন্তরীণভাবে পূর্ণসংখ্যার তুলনা কীভাবে কাজ করে?


18

উদাহরণস্বরূপ, সি-এর মতো ভাষায় দুটি পূর্ণসংখ্যার তুলনা করার সময়:

if (3 > 2) {
    // do something
}

3 কী 2 টির চেয়ে বেশি সত্য (সত্য) বা না (মিথ্যা) অভ্যন্তরীণভাবে তৈরি হয়?


19
বর্তমান উত্তরটি ক্ষেত্রেটির ক্ষেত্রে ঠিক আছে যখন তুলনামূলক পরিবর্তনশীল অভিব্যক্তি সম্পর্কে হয়, তবে অনেকগুলি আধুনিক সংকলক আপনার কোডের টুকরোটির দিকে নজর রাখবে, সনাক্ত করুন যে অভিব্যক্তিটি সর্বদা সত্য হবে (আক্ষরিক কারণে) এবং কেবল ifপুরোপুরি উপেক্ষা করুন , সরাসরি কোডিংয়ে যাচ্ছি do something
এসজেউন 76


3
@ স্নোম্যান আমি একমত নই যে কোনও "এটি কীভাবে কাজ করে" প্রোগ্রামিং তদন্তটি সেই প্রশ্নে ঘনীভূত হতে পারে, তবে এটি তাদের সদৃশ করে না।
ব্যবহারকারী 1643723

1
@ user1643723 এটি তখন করে যখন প্রশ্নে ফাংশনটি একটি নির্দিষ্ট অপকোড।
ক্রাইলিস-হরতাল-

1
@ user1643723 প্রশ্নটি জিজ্ঞাসা করছে যে কম্পিউটার কীভাবে কোনও মৌলিক ক্রিয়াকলাপ সম্পাদন করে এবং শীর্ষ উত্তরটি লজিক গেটস এবং লজিক সারণিগুলি নিয়ে আলোচনা করে। দু'টি বিষয় যা ডুপ টার্গেটের শীর্ষ উত্তরে বিস্তৃতভাবে কভার করা থাকে, এটি আপনার প্রশ্নেরও উত্তর দেয়।

উত্তর:


61

খরগোশের গর্তের নীচে সমস্ত, তাই না? ঠিক আছে আমি চেষ্টা করে দেখি

পদক্ষেপ 1. সি থেকে মেশিনের ভাষাতে

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

MOV AX, 3    ; Store 3 in register AX
MOV BX, 2    ; Store 2 in register BX
SUB AX, BX   ; Subtract BX from AX
JC  Label    ; If the previous operation overflowed, continue processing at memory location "Label"

উপরের প্রত্যেকটির একটি বাইনারি প্রতিনিধিত্ব রয়েছে; উদাহরণস্বরূপ, কোড SUBহল 2Dহেক্স, অথবা 00101101বাইনারি হবে।

পদক্ষেপ 2. ALU এ Opcodes

পাটিগণিত opcodes পছন্দ ADD, SUB, MUL, এবং DIVমৌলিক পূর্ণসংখ্যা গণিত একটি ব্যবহার সঞ্চালন ALU বা গাণিতিক যুক্তি ইউনিট CPU- র মধ্যে নির্মিত। নাম্বার সংরক্ষিত হয় রেজিস্টার কিছু opcodes করে; অন্যান্য ওপকোডগুলি চিপকে নির্দেশ দেয় যে এএলইউকে সেই সময়ে রেজিস্টারে যা কিছু সংরক্ষণ করা হয় তার উপর গণিত করতে to

দ্রষ্টব্য: এই মুহুর্তে আমরা যে কোনও সফটওয়্যার ইঞ্জিনিয়ারকে সি এর মতো 3 জিএল নিয়ে কাজ করা নিয়ে উদ্বিগ্ন হতে পারে সে সম্পর্কে আমরা ভালই আছি are

পদক্ষেপ ৩.এএলইউ, অর্ধ-সংযোজনকারী এবং পূর্ণ-সংযোজক

আপনি কি জানেন যে সমস্ত গাণিতিক ক্রিয়াকলাপগুলি আপনি জানেন সেগুলি NOR ক্রিয়াকলাপকে কমিয়ে দেওয়া যেতে পারে ? এবং ঠিক এটিই ALU কাজ করে।

ALU কেবল বাইনারি সংখ্যার সাথে কীভাবে কাজ করবে তা জানে এবং কেবল ওআর, নট, এবং, এবং এক্সওর এর মতো যৌক্তিক ক্রিয়াকলাপ সম্পাদন করতে পারে। বাইনারি সংযোজন এবং বিয়োগফলের বাস্তবায়ন একটি সংযোজনকারী হিসাবে পরিচিত একটি উপ-সিস্টেমে একটি নির্দিষ্ট উপায়ে সাজানো লজিক্যাল অপারেশনগুলির একটি সিরিজ দিয়ে সম্পন্ন হয় । এই সাবসিস্টেমগুলি "অর্ধ-সংযোজকগুলির" নেটওয়ার্কের সমন্বয়ে গঠিত যা দুটি বিটগুলিতে পরিচালনা করে এবং তাদের একক-বিট যোগফল এবং একক-বিট বহনকারী পতাকা নির্ধারণ করে। এগুলি এক সাথে শৃঙ্খলাবদ্ধ করে, ALU 8, 16, 32 ইত্যাদি বিট সহ সংখ্যায় অপারেশন করতে পারে।

হাফ-যোজক

বিয়োগ সম্পর্কে কী? বিয়োগ আরও যোগ করার অন্য একটি রূপ:

A - B = A + (-B)

ALU নির্ণয় -Bগ্রহণ করে দুই এর সম্পূরক এর B। এটি একবার নেতিবাচক রূপান্তরিত হয়ে গেলে, সংযোজকের কাছে মান জমা দেওয়ার ফলে বিয়োগের অপারেশন হবে।

পদক্ষেপ 4: চূড়ান্ত পদক্ষেপ: অন-চিপ ট্রানজিস্টর

Adders 'অপারেশন যে ইন্টারঅ্যাক্ট যেমন পাওয়া যায় হিসাবে "লজিক গেট," তৈরি করতে বৈদ্যুতিক উপাদানের একটি সমন্বয় ব্যবহার করে প্রয়োগ করা হয় transitor-ট্রানজিস্টার যুক্তিবিজ্ঞান বা TTL এর, অথবা সিএমওএস । এগুলি কীভাবে আপযুক্ত হয় তা দেখতে কয়েকটি উদাহরণের জন্য এখানে ক্লিক করুন

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

কিছু অতিরিক্ত নোট:

  1. আপনি যে কোডটি লিখেছেন তা সংকলক দ্বারা প্রকট আকার ধারণ করবে এবং রান সময়ে চালিত হবে না, কারণ এটি কেবলমাত্র ধ্রুবক দ্বারা গঠিত।

  2. কিছু সংকলক মেশিন কোডে সংকলন করে না তবে জাভা বাইটকোড বা। নেট অন্তর্বর্তী ভাষা হিসাবে অন্য একটি স্তর প্রবর্তন করে। কিন্তু শেষ পর্যন্ত এটি সমস্ত মেশিন ভাষার মাধ্যমে কার্যকর করা হয়।

  3. কিছু গাণিতিক অপারেশন আসলে গণনা করা হয় না; এগুলি গাণিতিক কোপ্রোসেসিং ইউনিটে বিশাল টেবিলগুলিতে দেখানো হয়, বা লুক এবং সংকলন বা ইন্টারপোলেশন সংমিশ্রণ থাকে। বর্গমূলের গণনা করার জন্য একটি উদাহরণ হ'ল ফাংশন । আধুনিক পিসি সিপিইউগুলির প্রতিটি সিপিইউ কোরে অন্তর্নির্মিত একটি ফ্লোটিং পয়েন্ট কপ্রোসেসিং ইউনিট রয়েছে।


3
এফডব্লিউআইডাব্লু, টিটিএল-কে উল্লেখ করা বিভ্রান্তিকর হতে পারে কারণ কার্যত কোনও আধুনিক প্রসেসর টিটিএল সিগন্যালিং ব্যবহার করেন না, বেশিরভাগ সিএমওএস এফইটি এবং 5 ভি বিজেটির পরিবর্তে লোয়ার ভোল্টেজ ব্যবহার করে।

2
সিএমওএস অবশ্যই টিটিএল এর চেয়ে আরও ভাল রেফারেন্স হতে পারে, যেমন @ ওয়াটসিসনামের পরামর্শ অনুসারে, যেহেতু আধুনিক প্রসেসরগুলিতে কেবল এটিই আরও সঠিক নয়, এটি ধারণাগতভাবেও অনেক সহজ।
জুলাই

3
@ জ্যাকএইডলি এই অংশটির অর্থ: "অন্য কথায়, একটি নির্দেশে 2 টি 3 থেকে বিয়োগ করা হয়, এবং পরবর্তী নির্দেশটি এটি প্রবাহিত হয়েছে কিনা তা পরীক্ষা করে দেখায়" "
কুতুলু মাইক

1
নিতপিকিং: আমি মনে করি CMPব্যবহার করা হবে, না SUB- তবে তারপরে আবারও কমবেশি " SUBফলাফল যেহেতু উপেক্ষা করা হবে এবং কেবল পতাকাগুলি সেট করা হয়েছে"
হেগেন ফন ইটজেন

5
আপনার অর্ধেক এবং পূর্ণ অ্যাডারের সংজ্ঞাটি ভুল। অর্ধ সংযোজক দুটি 1-বিট ইনপুট নেয় এবং যোগফলটি বহন করে এবং বহন করে। একটি পূর্ণ সংযোজনকারী অতিরিক্ত বহন ইনপুট নেয় তবে এখনও কেবল একক বিট। এন-বিট অ্যাডারের তৈরির জন্য অনেকগুলি উপায় রয়েছে, সবচেয়ে সহজ সরল একটি রিপল-ক্যারি অ্যাডেয়ার যা কেবল এন পূর্ণ সংযোজনকারীদের একটি চেইন। বৃহত্তর এনএসের অনুশীলনে এটিতে বেশ খারাপ বিলম্ব হয়েছে তাই আধুনিক সিপিইউ ডিজাইনে আরও জটিল ডিজাইন ব্যবহৃত হয়।
ভু
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.