সমাবেশ ভাষা শেখা কি মূল্যহীন? [বন্ধ]


97

এএসএম শেখা কি এখনও সার্থক ?

আমি এটির কিছুটা জানি, তবে আমি এটি সত্যিই ব্যবহার করি নি বা এটি সঠিকভাবে শিখি নি কারণ এসেম্বলারের মধ্যে আমি যা শিখি তা আমি 1/10 তম সময়ে সি বা সি ++ এর মতো কিছু ভাষা দিয়ে করতে পারি। সুতরাং, আমি সত্যই শিখতে এবং এএসএম ব্যবহার করা উচিত? এটি আমার পেশাগতভাবে কোন ভাল করতে হবে? এটা কি আমার সম্পদ বাড়িয়ে দেবে? সংক্ষেপে, এটি কি আমাকে আরও ভাল প্রোগ্রামার করে তুলবে?

নোট: আমি নিম্নস্তরের সমাবেশ মত কথা বলছি FASM বা NASM এবং ভালো কিছু HLA (উচ্চ-স্তর অ্যাসেম্বলার)।


4
দ্রষ্টব্য, যে সমাবেশ ভাষাটি প্রসেসর / নিয়ামকের সাথে আবদ্ধ।
rmflow

7
তুমি বোঝাতে চাইলে এটা ক্রস প্ল্যাটফর্ম নয়? !!
শিক্ষানবিস হ্যাকার

না। উদাহরণস্বরূপ: Worldofspectrum.org/Z80instructions.html
rmflow

4
ঠিক আছে, তাই প্রতিটি প্রসেসরের জন্য আলাদা সমাবেশ ভাষা আছে ??? !!!!!!!!!!!!!!!!!!!!!!!!!
অ্যাপ্রেন্টিসহ্যাকার

4
প্রসেসরের প্রতিটি পরিবারের জন্য আলাদা আলাদা সংসদীয় ভাষা । ইন্টেল এবং এএমডি এর অফার সহ পরবর্তী কোনও এক্স ৮86। প্রসেসরের উপর 386 কোড চালিত হয় - তবে কিছু বৈশিষ্ট্য সেট হ'ল স্বত্বাধিকারী এক্সটেনশন। ভাষা এই অতিরিক্ত নির্দেশাবলীর জন্য একই কিন্তু ফলে বাইনারি পোর্টেবল হবে না।
স্প্রেফ

উত্তর:


109

আমি কিপ ইরভিনের বই থেকে শিখেছি । যদি আপনি তাঁর (অপ্রাসঙ্গিক) গ্রন্থাগারগুলির (ন্যায্য) সমালোচনা উপেক্ষা করেন তবে আমি এটিকে ভাষাটির একটি ভাল পরিচয় হিসাবে সুপারিশ করতে পারি - যদিও সত্যই আকর্ষণীয় জিনিসগুলির জন্য আপনাকে নেটে অবসেসগুলি খুঁজে বের করতে হবে।

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

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

উদাহরণ: এলএফএসআরগুলি ঘোরান-সাথে-বহন নির্দেশের সাথে দ্রুত সঞ্চালিত হয়, এর মতো নির্দিষ্ট ক্ষেত্রে যেমন এসেমব্লার সংস্করণটি লেখা ঠিক তত সহজ, কারণ এটি নির্ধারণের জন্য সংকলক যথেষ্ট স্মার্ট কিনা তা আবিষ্কার করা যায়। কখনও কখনও আপনি কেবল এমন কিছু জানেন যা সংকলকটি না করে।

এটি আপনাকে সুরক্ষা সম্পর্কিত বিষয়গুলি - রাইটিং-অর-এক্সিকিউট, স্ট্যাক ওভাররানস ইত্যাদির বোঝাপড়া বাড়িয়ে তোলে

কিছু সম্মতিমূলক বিষয়গুলি তখনই স্পষ্ট হয়ে যায় যখন আপনি প্রতি-শিক্ষামূলক স্তরে কী ঘটছে তা অবগত হন।

আপনার কাছে যদি সোর্স কোড না থাকে তবে কখনও কখনও ডিবাগ করার সময় এটি কার্যকর হতে পারে।

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

তারপরে গ্রাফিক্স হার্ডওয়্যারের জন্য বিশেষ অ্যাসেম্বলি ভাষা রয়েছে, যদিও শেডার ভাষা কয়েক বছর আগে উচ্চ-স্তরে গিয়েছিল, যে কোনও সমস্যা যা আপনাকে সমস্যা সম্পর্কে আলাদাভাবে ভাবতে সহায়তা করে তা ভাল।


7
ভাল উত্তর +1। শেখা এবং ব্যবহার করা দুটি পৃথক জিনিস, এটি শেখা একটি ভাল ধারণা, কখন / যদি এটি ব্যবহার করা হয় তা অভিজ্ঞতার সাথে আসে।
old_timer

একটি উদাহরণ দেওয়ার জন্য, লিনাস টরভাল্ডস তার কোডটি ডিবাগ করার জন্য একটি বিচ্ছিন্নকারী ব্যবহার করে যাতে আমি মনে করি যে তিনি x86 এর সমাবেশ সম্পর্কে ভাল জ্ঞান রাখেন knowledge
ইভানজিনহো

55

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

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


4
তোমার মানে আমি শুধু বেসিকটি শিখি পুশ, পপ, মুভ এবং কমান্ড কমানোর ?
অ্যাপ্রেন্টিসহ্যাকার

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

4
আপনি অন্য উত্তরগুলি ভুলভাবে উপস্থাপন করছেন - কেউ বলছেন না যে আপনার সমাবেশ প্রয়োজন / করা উচিত ; প্রশ্ন অনুযায়ী এটি কার্যকর বা সার্থক just আপনার উত্তর যদিও এখনও প্রাসঙ্গিক।
লুক ড্যান্টন

4
@ বার্নিং প্রোডিজি: আমার বিশ্বাস হ'ল আপনার যে সমাবেশগুলি ব্যবহার করেন সেগুলিতে কীভাবে নির্দেশাবলী রয়েছে সে সম্পর্কে আপনার কিছুটা প্রাথমিক জ্ঞান থাকা উচিত (যেমন আর্গুমেন্টগুলি কীভাবে পছন্দ হয়) এবং কয়েকটি কমান্ডের কিছু প্রাথমিক জ্ঞান, কী বোঝা বা একটি দোকান হয়। তারপরে আপনার যদি অ্যাসেম্বলির কিছু অংশ দেখার প্রয়োজন হয় তবে আপনি নির্দেশাবলীর প্রতিটি বোঝার জন্য একটি রেফারেন্স ব্যবহার করতে পারেন এবং এটি করার মাধ্যমে আপনি আপনার প্রয়োজনীয় বেসিকগুলি শিখতে শুরু করবেন।
ডেভিড রদ্রিগেজ -

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

28

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


24

প্রচুর বিভিন্ন প্যারাডিজম থেকে প্রচুর বিভিন্ন ভাষা শেখা সার্থক। জাভা, সি ++, সি #, এবং পাইথন শেখা গণনা করে না, কারণ এগুলি সমস্ত একই দৃষ্টান্তের উদাহরণ।

যেহেতু অ্যাসেম্বলি সমস্ত ভাষার মূল (ভাল, মূলের নিকটে) রয়েছে, তাই আমি একজন বলেছি যে সমাবেশ শেখা সার্থক।

তারপরে আবার একটি কার্যকরী প্রোগ্রামিং ভাষা, লজিক প্রোগ্রামিং, স্ক্রিপ্টিং ভাষা, গণিত-ভিত্তিক ভাষা শেখা সার্থক। আপনার কেবলমাত্র এত সময় আছে, তাই আপনাকে বাছাই এবং বেছে নিতে হবে।


এবং তারপরে, আপনি অবশেষে যখন এগুলি সমস্ত শিখলেন এবং ভাবছেন যে আপনার কী চলছে তার একটি ঝলক রয়েছে, আপনি জে
মিখা উইডেনম্যান

4

ডিবাগ করার সময় এএসএম জেনে রাখাও দরকারী, কারণ মাঝে মাঝে আপনার সমস্ত কিছু "ত্রুটির এএসএম ডাম্প"।


2

আপনি যা পরিকল্পনা করছেন তাতে কি এর কোনও ব্যবহার আছে ? আপনি বর্তমানে যা করছেন বা যা করার পরিকল্পনা করছেন তা কি কোনও উপায়ে আপনাকে সহায়তা করবে? এগুলি হ'ল দুটি প্রশ্ন যা আপনার নিজের জিজ্ঞাসা করা উচিত, সেগুলির উত্তরটি আপনার প্রশ্নের উত্তর।

আরও সাধারণ অর্থে, হ্যাঁ, আমি আমার মতে এটিম (x86 বা আর্মের মতো কিছু) শেখার পক্ষে মূল্যবান, আপনি কী প্রোগ্রামিং করছেন এবং কীভাবে আপনার এটি ডিবাগ করছেন তার উপর নির্ভর করে এটি আপনার পক্ষে কতটা ভাল কাজ করে।


2

আপনি কোন প্রোগ্রামিং স্তরে পৌঁছাতে চান তা নির্ভর করে। আপনার যদি ডিবাগারগুলির সাথে কাজ করতে হয় তবে হ্যাঁ। আপনার যদি জানা দরকার যে সংকলকরা কীভাবে কাজ করে তবে হ্যাঁ। যে কোনও এসেইম্বেবলার / ডিবাগার সিপিইউ নির্ভর, তাই প্রচুর কাজ আছে, এক্স x পরিবারটি কত বড় এবং পুরানো তা পরীক্ষা করে দেখুন।


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