এটিএলটি-এর তুলনায় ইন্টেল অ্যাসেম্বলি সিনট্যাক্সের সীমাবদ্ধতা [বন্ধ]


88

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

যদি এটি গুরুত্বপূর্ণ হয় তবে আমার ফোকাস কেবল কোনও সম্পর্ক সম্পর্কিত সমাবেশে এবং সিনট্যাক্সটিতে লিনাক্স / বিএসডি এবং সি ভাষা থাকতে পারে।


11
আমি অ-গঠনমূলক প্রশ্নগুলি 50 টিরও বেশি ভোট পেয়ে পছন্দ করি।

উত্তর:


80

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

দেখে মনে হচ্ছে আপনি জিডিবি এটির সাহায্যে ইন্টেল সিনট্যাক্স ব্যবহার করতে পারেন:

নির্গমন-গন্ধ স্বাদ নির্ধারণ করুন

জিসিসি এর সাথে ইন্টেল সিনট্যাক্স করতে পারে -masm=intel


18
পাশাপাশি, ইকো সেট ডিস ইন্টেল >> ~ / .gdbinit
ওভনা

9
এটিএন্ডটি সিনট্যাক্সটি কীভাবে কম পঠনযোগ্য? আমি "ড শব্দ" থাকা অপেক্ষা অপারেশনগুলিতে আকারের প্রত্যয় পেয়েছি cons আমি আর কিছু মিস করছি?
হক্কেন

54
lea -0x30(%rcx,%rax,8),%eaxজন্য এটিটি সংবর্ত হয় lea eax,[rcx+rax*8-0x30]। + এবং * এর ব্যবহার সত্যই ইনটেল শৈলীতে সহায়তা করে।
জর্জেনসেন

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

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

43

জিএনইউ অ্যাসেমব্লার (জিএএস) এর প্রাথমিক বাক্য গঠনটি এটিএন্ডটিটি। ইন্টেল সিনট্যাক্স এটি তুলনামূলকভাবে নতুন সংযোজন। লিনাক্স কার্নেলের x86 অ্যাসেম্বলিটি এটি অ্যান্ড টি সিনট্যাক্সে রয়েছে। লিনাক্স বিশ্বে, এটি সাধারণ বাক্য গঠন। এমএস বিশ্বে ইন্টেল সিনট্যাক্স বেশি দেখা যায়।

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

এর বাইরে, এটি কেবল একটি সিনট্যাকটিক পার্থক্য। উভয়ের ফলাফল একই x86 মেশিন কোড হবে।


25
সম্মত এবং সম্মত। এটি অ্যান্ড টি সিনট্যাক্স ব্যবহার করা অপরাধ হওয়া উচিত, এটি পাল্টা স্বজ্ঞাত এবং কুরুচিপূর্ণ, আপনি কেন প্রতিটি একক সংখ্যার উপরিবর্তন করতে চান এবং $ এবং% দিয়ে নিবন্ধন করতে চান এবং বিপরীত এসআইবি নোটেশনে আপেক্ষিক ঠিকানা নির্দিষ্ট করতে চান, আমি ইন্টেল সিনট্যাক্স ব্যবহার করছি দুটি বছর এবং এখনও এটি & টি এমনকি কেন বিদ্যমান তা দেখতে পাচ্ছে না।
L̲̳o̲̳̳n̲̳̳g̲̳̳p̲̳o̲̳̳k̲̳̳e̲̳̳

11
আপনি যদি সাহসের সাথে এটিকে বর্ণনা করতে যাচ্ছেন তবে অন্তত কেন ইন্টেল এত বেশি ভাল সে সম্পর্কে কিছু প্রমাণ সরবরাহ করুন ।
হক্কেন

8
@ হাওকেন হিটর্সরা ঘৃণা করবে
গুন্থার পাইজ

8
@ হাওকেন আপনি কি পরামর্শ দিচ্ছেন যে তিনি সাহসী প্রকারের কারণে তিনি কোনওভাবেই তাঁর মতামতকে এমনভাবে বর্ণনা করছেন যে তিনি যদি সাহসীকে একা ছেড়ে চলে যেতেন তবে তিনি হত না? প্রশ্নটি কার্যত এই ধরণের মতামত-পরিচালিত "বিতর্ক "কে যাইহোক আমন্ত্রণ জানিয়েছিল, সম্ভবত এটি এখন বন্ধ কেন!
এলিয়ট

4
এআরএমের জন্য ইন্টেল সিনট্যাক্স সম্পর্কে কীভাবে?
8:30 এ সিলভার

33

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

at&t noprefix                   intel
mov eax, -4(ebp,edx,4)          mov DWORD PTR[-4 +ebp +edx *4], eax
mov eax, -4(ebp)                mov DWORD PTR[-4 +ebp], eax
mov edx, (ecx)                  mov DWORD PTR[ecx], edx
lea (   ,eax,4), eax            lea eax, DWORD PTR[8 + eax*4]
lea (eax,eax,2), eax            lea eax, DWORD PTR[eax*2+eax]

... এবং আরও জটিল নির্দেশাবলীর সাথে আরও জটিল হয়

'নফ বলল।

পিএস: এই উত্তরটি মূলত অন্য কয়েকটি উত্তরের (আইএমএইচও) দুর্বলতা হাইলাইট করার কারণেই বিদ্যমান, যা আসলে উত্তর নয়, তবে মতামত। এবং অবশ্যই বাস্তবে এই উত্তরটি কেবল আমার নম্র মতামত।

পিপিএস: আমি ইন্টেল সিনট্যাক্সকে ঘৃণা করি না, আমি কেবল যত্ন করি না।


19
আমি ভীষণ বিভ্রান্ত আপনি কি বোঝাচ্ছেন যে শব্দ বিন্যাসটি কখনই শব্দ আকারকে সুস্পষ্ট করার প্রয়োজন হয় না? আপনি কেন আমার উদাহরণটি অনুলিপি করলেন এবং শব্দের আকার এবং অকেজো পিটিআর জিনিসটি যুক্ত করলেন? এছাড়াও কেন আপনি আমার পার্থক্যগুলিকে একটি নেতিবাচক বাম অপারেণ্ডের সাথে যোগফলগুলিতে পরিবর্তন করেছেন? এটি কি কারণ যে নির্দেশটি আসলে কীভাবে এনকোড হয়? ব্যবহারকারীর খুব কমই সত্যিই এটি সম্পর্কে যত্ন নিতে হবে। আমি যে প্রতিটি এসেমব্লার ব্যবহার করেছি তাতে আপনি ডাবর্ড পিটিআর বাদ দিতে পারেন যেহেতু বাম অপারেন্ডটি 32-বিট এবং ডান অপরেন্ডের চারপাশে বর্গাকার বন্ধনী রয়েছে।
L̲̳o̲̳̳n̲̳̳g̲̳̳p̲̳o̲̳̳k̲̳̳e̲̳̳

12
তদুপরি, আইডিএ / অলিডবিজি এমনকি আপনি যা লিখেছেন তেমন কিছু উত্পাদন করে না, সুতরাং আমি নিশ্চিত যে মেশিন কোড থেকে "সুন্দর" ইন্টেল সিনট্যাক্সে যেতে কোনও সমস্যা নেই। সুতরাং আপনার উদাহরণটি বেশ সংকোচযুক্ত বলে মনে হচ্ছে এবং এমন কিছু যা আমি কখনও হাজিরা বা বিচ্ছিন্নকরণকারীর সবচেয়ে তুচ্ছ বাস্তবায়ন বাদে দেখতে পাই না। অন্যদিকে, আমি যে & টি নির্দেশাবলী উপহাস করছি তা সরাসরি & টি সিনট্যাক্সে টিউটোরিয়াল শিক্ষার প্রথম অনুচ্ছেদে থেকে এসেছে।
L̲̳o̲̳̳n̲̳̳g̲̳̳p̲̳o̲̳̳k̲̳̳e̲̳̳

8
আমি এই সিদ্ধান্তে পৌঁছেছি যে আপনি একটি মেশিন তাই আপনি এমন একটি বাক্য গঠন পছন্দ করেন যা নির্দেশের বিট-এনকোডিংকে সরাসরি আয়না দেয়। (এগুলি & টি সিনট্যাক্স যা করে) আমার একটি সন্দেহও রয়েছে যে লোকেরা যখন আরও বেশি অস্পষ্ট হওয়ার কারণে সিন্টেক্স ব্যবহার করে তখন তারা বেশি অনুভব করে 1337, যদিও এটি সত্যিই কোনও সুবিধা নয় ...
L̲̳o̲̳̳n̲̳̳g̲̳̳p̲̳o̲̳̳k̲̳̳e̲̳̳

7
@ লংপোক নো, এটিএন্ডটি সিনট্যাক্স শব্দের আকারটি প্রাসঙ্গিকতা থেকে পরিষ্কার থাকলে তা সুস্পষ্ট করার দরকার নেই। ইন্টেলের মতোই: SOMEWORD PTR[]অপারেন্ড আকারটি প্রসঙ্গ থেকে পরিষ্কার থাকলে আপনার প্রয়োজন হবে না । তবে কোনও স্মৃতি অবস্থানে তাত্ক্ষণিকভাবে সরিয়ে নেওয়ার ক্ষেত্রে আপনার এটি দরকার ( lএটিএলটি থেকে ডিএডব্লর্ড পিটিআর হিসাবে ইন্টেল উভয়ই )। এবং হ্যাঁ আমার উদাহরণটি বেশ স্বীকৃত - তবে তা আপনার ছিল। যদি আপনি এখনও দেখতে না পান তবে: আপনি ইন্টেলের অপ্রয়োজনীয় শব্দের বর্জন করেছেন তবে এটিকে এ্যান্ডটিটিতে রেখেছেন। আপনি অপারেণ্ডগুলি এমনভাবে চয়ন করেন যাতে তারা ইন্টেলের সাথে সুন্দরভাবে সারিবদ্ধ হয় তবে এটি এ্যান্ডটি তে না করে।
গুন্থার পাইজ

7
সুতরাং আপনি কি -4(ebp,edx,4)জিনিস চেয়ে ভাল বলছেন [4*edx+ebp-4]? আমি উত্তরোত্তর আরও স্বজ্ঞাত।
কলমারিয়াস

24

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

আমি খুব ইন্টেল-সিনট্যাক্স x86 এএসএম (ডস-তেও) দাঁত কাটা এবং সি / ইউনিক্সে স্যুইচ করার সময় প্রাথমিকভাবে এটি আরও স্বজ্ঞাত পেয়েছি। তবে একবার আপনি এটিএন্ডটি শিখলে এটি তত সহজ দেখাবে।

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


16
কি? কারণ জিসিসি ডিফল্টরূপে & টি এ & টি ব্যবহার করে সিনট্যাক্স এ শেখার কোনও কারণ নেই। বিশেষত যখন আপনি এটি আরও স্বজ্ঞাত ইন্টেল সিনট্যাক্সে স্যুইচ করতে পারেন।
L̲̳o̲̳̳n̲̳̳g̲̳̳p̲̳o̲̳̳k̲̳̳e̲̳̳

7
@ লংপোক ইন্টেল সিনট্যাক্স শেখা কেবল কারণ এটি প্রত্যেকে "আরও স্বজ্ঞাত" বলে অভিহিত করা আরও ভাল কারণ নয়। আসলে এটি কোনও কারণই নয়।
হক্কেন

4
আপনি উভয়ই সঠিক, ভেরিলোগ এবং ভিএইচডিএল উভয়ই আটকে আছে একই কারণে।
বাগ

@ হাওকেন: সত্য। ইন্টেল সিনট্যাক্স শেখার আসল কারণ হ'ল এটি ইন্টেলের এবং এএমডি এর ম্যানুয়ালগুলি ব্যবহার করে। বিক্রেতাদের ম্যানুয়ালগুলির যেমন বিশদভাবে এটিএন্ডটি টি সিনট্যাক্স ব্যবহার করে কোনও আইএসএ রেফারেন্স ম্যানুয়াল নেই, যেমন felixcloutier.com/x86/cmppd (ইন্টেলের পিডিএফ থেকে প্রাপ্ত)। Uops.info এবং agner.org/optimize এর মতো পারফরম্যান্সের তথ্য । আমি মনে করি আমি পড়েছি যে কিছু ইউনিক্স বিক্রেতার কোনও সময়ে এটিএন্ডটি টি আইএসএ রেফারেন্স তৈরি হয়েছিল তবে এটি অবশ্যই এখনই পুরানো এবং এভিএক্স নির্দেশাবলী আবরণ করবে না। 100% এই উত্তরের সাথে একমত হয়েছে: একই মেশিন কোড, এটি প্রকাশের জন্য আলাদা সিনট্যাক্স, কোনও বড় কথা নয়।
পিটার কর্ডস

19

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


4
কীভাবে সরঞ্জামগুলির "পেশাদার" ব্যবহারকারী হওয়া এবং কীভাবে আপনার আরও উত্পাদনশীল করে তুলতে সেগুলি কীভাবে পরিবর্তন করবেন তা জেনে রাখা যায়? ইন্টেল সিনট্যাক্সের জন্য +1।
জোনাথন রাইনহার্ট

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

7
আমি উভয়ই শেখার পক্ষে পরামর্শ দিচ্ছি, আমি শয়তানের অ্যাডভোকেটকে অভিনয় করব এবং পরামর্শ দেব যে আপনি কেবল নিজের পছন্দসই সিনট্যাক্সে ভি.এম. কে স্বয়ংক্রিয় রূপান্তরকারী * .s ফাইলগুলিতে স্ক্রিপ্ট করতে পারবেন।
বাগ

4
যেহেতু ইন্টেল সিনট্যাক্সটি পড়া সহজ, তাই ইনটেল সিনট্যাক্সের একটি সুবিধা রয়েছে। "লি ইক্স, [ইক্স * 4 + 8]" "লী 8 (,% ই্যাক্স, 4),% ইক্স" এর চেয়ে অনেক বেশি ভাল উদ্দেশ্যমূলক পাঠযোগ্যতা রয়েছে
লুসিও এম টাটো

4
@ বাগ হি, আপনি ইমাস ভুল বানান করেছেন; ডি
জিডিপি 2

12

ইন্টেল সিনট্যাক্সটি সমস্ত কিছু কভার করে (ধরে নিই যে এসেম্বলার / ডিসসেমব্লারটি সর্বশেষ জাঙ্ক ইন্টেলের সাথে তাদের নির্দেশিকাতে যুক্ত হয়েছে)) আমি নিশ্চিত যে এ & টি একই।

ইন্টিলে তেমন নয়
মুভেল -4 (% ebp,% edx, 4),% eax Mov eax, [ebp-4 + edx * 4]
মুভেল -4 (% ইবিপি),% ই্যাক্স মুভ ইক্স, [ইবিপি -4]
মুভাল (% একেক্স),% এডিএক্স মোভ এডেক্স, [ইকএক্স]
8 টি (,% ইক্স, 4),% ইক্স লি ল্যাক্স, [ইক্স * 4 + 8]
লীল (% ইক্স,% ইক্স, 2),% ইক্স লি ল্যাক্স, [ইক্স * 2 + ইক্স]

... এবং আরও জটিল নির্দেশাবলীর সাথে আরও জটিল হয়

'নফ বলল।


17
না, যথেষ্ট বলা হয়নি।
গুন্থার পাইজ

4
পোস্টার ইতিমধ্যে জানিয়েছে যে তারা ইন্টেল সিনট্যাক্স পছন্দ করে; তাদের জন্যে ভালো; তাহলে আপনি কাকে বোঝানোর চেষ্টা করছেন?
হক্কেন

4
@ হ্যাকেন কেবল পোস্টারই নয় যে উত্তরগুলি পড়বে read
উইঙ্গার সেন্ডন

তিনি পছন্দ করেন যে তিনি কীভাবে দোয়ার দৈর্ঘ্যের সাথে উদাহরণ উল্লেখ করেছেন। দয়া করে একক বাইট বা সংক্ষেপে একটি মেমরি অপারেণ্ড লিখুন।
অজয় ব্রহ্মক্ষত্রিয়

2

আমার প্রথম সমাবেশের ভাষা এমআইপিএস ছিল, যা আমি লক্ষ্য করেছি এটিটি সিনট্যাক্সের সাথে খুব মিল। সুতরাং আমি এটিটি সিনট্যাক্সটিকে পছন্দ করি তবে যতক্ষণ আপনি এটি পড়তে পারবেন ততক্ষণ তা গুরুত্বপূর্ণ নয়।


4
এমআইপিএস সমাবেশটি কেবল লোড / স্টোর ইন্সট্রাক্টরের ঠিকানার বিন্যাসে এটি অ্যান্ড টি সিনট্যাক্সের সমান। তবে এমআইপিএসের লোড / স্টোরের জন্য কেবলমাত্র 1 সাধারণ অ্যাড্রেসিং মোড রয়েছে যখন ইন্টেলের আরও অনেক কিছুই রয়েছে যা এটি আরও জটিল করে তোলে। বিবেচনা করুন lea -0x30(%rcx,%rax,8),%eaxএবং lea eax,[rcx+rax*8-0x30]j postedrgensen উপরে পোস্ট। এবং এটি অ্যান্ড টি এর বিপরীতে এমআইপিএস এখনও অন্য সকলের মতো গন্তব্য-প্রথম বিন্যাস ব্যবহার করে। তদ্ব্যতীত, এমআইপিএস নম্বরটি $ দ্বারা উপসর্গ করা প্রয়োজন হয় না এবং এমআইপিএসে নামগুলি নিবন্ধ করা খুব কম হয়, সুতরাং এটিএন্ডটি-র মতো সমস্ত উপায়ে% পাওয়া খুব অস্বস্তিকর নয়
ফুক্লিভি
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.