تبلیغات :
ماهان سرور
آکوستیک ، فوم شانه تخم مرغی ، پنل صداگیر ، یونولیت
دستگاه جوجه کشی حرفه ای
فروش آنلاین لباس کودک
خرید فالوور ایرانی
خرید فالوور اینستاگرام
خرید ممبر تلگرام

[ + افزودن آگهی متنی جدید ]




نمايش نتايج 1 به 4 از 4

نام تاپيک: Include (ASM Obj) in TC

  1. #1
    اگه نباشه جاش خالی می مونه MAR_Programmer's Avatar
    تاريخ عضويت
    Feb 2006
    محل سكونت
    Ubuntu Desktop
    پست ها
    253

    پيش فرض Include (ASM Obj) in TC

    سلام خدمت دوستان
    از اونجا که سر فصل این تاپیک C بود نه ++VC من سوال خودم رو اینجا مطرح کردم امیدوارم مدیران سایت من رو مجازات نکنن
    سوال من اینه که چطوری می تونم از یک فایل Obj که توی ASM ساختم توی TC v3.0 استفاده کنم
    سوال رو بیشتر توضیح می دم:
    ببینید ما توی اسمبلی می تونیم فایل های خاصی رو داشته باشیم که توشون زیربرنامه ها رو قرار بدیم و در آخر از طریق برنامه Link این فایل ها رو به برنامه اصلی پیوند بدیم
    مثلا من یه تابع توی فایلی دارم به صورت زیر اونو ایجاد کردم

    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
    حالا چطوری می تونم توی TC این فایل رو (در واقع تابع رو) استفاده کنم ببینید من معرفی تابع رو انجام دادم

    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
    اما موقع لینک کردن که از tcc استفاده می کنم به فایل Obj من گیر میده می خواستم از حضور اساتید استفاده کنم و ببینم چطوری می تونم این مشکل رو حل کنم (راهنمایی بیشتر این مبحث یکی از مباحث مورد تدریس در درس برنامه سازی سیستم هست)
    پیشاپیش ممنون

  2. #2
    داره خودمونی میشه DaneshD's Avatar
    تاريخ عضويت
    May 2009
    محل سكونت
    Sweden
    پست ها
    196

    پيش فرض

    به احتمال زیاد تابع اسمبلی با نام extern در C همخوانی نداره که لینکر پیغام خطا میده. بطور کلی سعی کن این الگو رو دنبال کنی:

    تابع خودت در اسمبلی رو به این صورت بنویس:

    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
    بعد در کد C این تابع رو به اینصورت فراخوانی کن:

    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید


    حالا برای فراخوانی تابع با متغیرهای ورودی در اسمبلی، اگر با Directive ها آشنایی داری و به کمک TASM میتونی به صورت خلاصه زیر یک متغیر رو pass کنی به برنامت در C:

    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید


    که متغیر ورودی در NOS ذخیره شده. برای درک بهتر Directive ها، کد بالا در واقع کد پایین است که بدون Directive نوشته شده است:

    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
    که فراخوانی اون در کد C شما به صورت زیر خواهد بود:

    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید



    در آخر، برای کامپایل کردن برنامه ابتدا کد اسمبلی و سپس کد C را به صورت زیر کامپایل کنید:

    TASM MUFUN.asm

    که منجر به تولید فایل MYFUN.obj می گردد. سپس فایل C را به صورت زیر کامپایل کنید:

    TCC myprogram.c MYFUN.asm

    دقت کنید فایل C را در همان مسیری کامپایل کنید که فابل obj اسمبلی ساخته شده وجود داشته باشد.





  3. #3
    اگه نباشه جاش خالی می مونه MAR_Programmer's Avatar
    تاريخ عضويت
    Feb 2006
    محل سكونت
    Ubuntu Desktop
    پست ها
    253

    پيش فرض

    با سلام
    حالا اگر من به جای TASM از MASM استفاده کنم چی تفاوتی بین این دو کامپایلر هست؟

  4. #4
    داره خودمونی میشه DaneshD's Avatar
    تاريخ عضويت
    May 2009
    محل سكونت
    Sweden
    پست ها
    196

    پيش فرض

    فکر نکنم فرقی داشته باشه. امتحان کن ببین چی میشه. گرچه TASM فکر کنم با خود Turbo C عرضه میشه.

Thread Information

Users Browsing this Thread

هم اکنون 1 کاربر در حال مشاهده این تاپیک میباشد. (0 کاربر عضو شده و 1 مهمان)

User Tag List

قوانين ايجاد تاپيک در انجمن

  • شما نمی توانید تاپیک ایحاد کنید
  • شما نمی توانید پاسخی ارسال کنید
  • شما نمی توانید فایل پیوست کنید
  • شما نمی توانید پاسخ خود را ویرایش کنید
  •