gcc -S
বিকল্প যেমন AT & T সিনট্যাক্স মধ্যে সমাবেশ কোড জেনারেট করবে, একটি উপায় আছে ইন্টেল সিনট্যাক্স ফাইল জেনারেট করতে হয়? নাকি দুজনের মধ্যে রূপান্তর করার কোনও উপায় আছে?
gcc -S
বিকল্প যেমন AT & T সিনট্যাক্স মধ্যে সমাবেশ কোড জেনারেট করবে, একটি উপায় আছে ইন্টেল সিনট্যাক্স ফাইল জেনারেট করতে হয়? নাকি দুজনের মধ্যে রূপান্তর করার কোনও উপায় আছে?
উত্তর:
আপনি কি এই চেষ্টা করেছেন?
gcc -S -masm=intel test.c
অনির্ধারিত, তবে আমি এটি এই ফোরামে পেয়েছি যেখানে কেউ দাবি করেছে যে এটি তাদের পক্ষে কাজ করেছে।
আমি কেবল ম্যাকটিতে এটি চেষ্টা করেছি এবং এটি ব্যর্থ হয়েছে, তাই আমি আমার ম্যান পৃষ্ঠায় দেখেছি:
-masm=dialect
Output asm instructions using selected dialect. Supported choices
are intel or att (the default one). Darwin does not support intel.
এটি আপনার প্ল্যাটফর্মে কাজ করতে পারে।
ম্যাক ওএসএক্সের জন্য:
clang++ -S -mllvm --x86-asm-syntax=intel test.cpp
prefix
/ noprefix
(ক্লেং বিধানসভাটি গ্রাস করে কিনা তা নিশ্চিত কিনা) not
দ্য
gcc -S -masm=intel test.c
আমার সাথে কাজ করে। তবে আমি অন্যভাবে বলতে পারি, যদিও এটির জিসিসি চালানোর সাথে কোনও সম্পর্ক নেই। এক্সিকিউটেবল বা অবজেক্ট কোড ফাইলটি সংকলন করুন এবং তারপরে নিচের মত অবজেক্টের সাহায্যে ইনটেল asm সিনট্যাক্সে অবজেক্ট কোডটি বিযুক্ত করুন:
objdump -d --disassembler-options=intel a.out
এটি সাহায্য করতে পারে।
সিপিপি ফাইলে আমার এই কোডটি রয়েছে:
#include <conio.h>
#include <stdio.h>
#include <windows.h>
int a = 0;
int main(int argc, char *argv[]) {
asm("mov eax, 0xFF");
asm("mov _a, eax");
printf("Result of a = %d\n", a);
getch();
return 0;
};
এই কোডটি এই জিসিসি কমান্ড লাইনের সাথে কাজ করেছে:
gcc.exe File.cpp -masm=intel -mconsole -o File.exe
এটি * .exe ফাইলের ফলাফল করবে এবং এটি আমার অভিজ্ঞতায় কাজ করেছে।
Notes:
immediate operand must be use _variable in global variabel, not local variable.
example: mov _nLength, eax NOT mov $nLength, eax or mov nLength, eax
A number in hexadecimal format must use at&t syntax, cannot use intel syntax.
example: mov eax, 0xFF -> TRUE, mov eax, 0FFh -> FALSE.
এখানেই শেষ.
$ gcc -S -masm=intel -mconsole a.c -o a.out gcc: error: unrecognized command line option ‘-mconsole’
-o a.out
কোনও .s ফাইল পাবেন না।
echo "packsswb mm0,[bp+si-0x54]" | llvm-mc-3.2 -x86-asm-syntax=intel
দেয়packsswb -84(%bp,%si), %mm0