نمایش نتایج 1 تا 2 از 2

نام تاپیک: آیا کد های دلفی به جاوا تبدیل میشوند؟

  1. #1
    کاربر دائمی آواتار alireza es
    تاریخ عضویت
    مرداد 1391
    محل زندگی
    سرزمین اتش
    پست
    167

    آیا کد های دلفی به جاوا تبدیل میشوند؟

    با عرض سلام.
    همون طور که میدونید هسته آندرویدو با C نوشتن و بقیه قسمتاشو با Java.
    حالا فریم ورکی مثل کیوتی داره از آندروید پشتیبانی میکنه جای تعجب نیست اما
    چطور کدهای دلفی که با کامپایلر پاسکال کامپایل میشه در آندروید اجرا میشه؟یا در ios؟

  2. #2

    نقل قول: آیا کد های دلفی به جاوا تبدیل میشوند؟

    با سلام،
    از دید متخصصان کامپایلر و تولید کنندگان زبانهای برنامه نویسی، سینتکس یک زبان برنامه نویسی در یک سطح انتزاعی بالا قرار دارد و نمی توانید بگویید اگر فلان برنامه با فلان سینتکس نوشته شده توانایی اجرا در پلتفرم X را دارد یا نه. چیزی که مهم است کدهای نهایی نزدیک به زبان ماشین است که توسط CG : Code Generator مربوط به کامپایلر تولید می شود. در این روزها کامپایلر دلفی بسیار پیشرفت کرده است. فریم ورک اصلی ای که سازندگان کامپایلر دلفی از آن استفاده می کنند LLVM نام دارد. در اینجا باید برنامه ساخته شده با دلفی به یک کد میانی به نام IR : Intermediate Representation تبدیل شود. LLVM شامل Backend های متفاوتی است برای MAC و ARM و ... است که کار تبدیل کدهای IR به کد نهایی را انجام می دهند. به طور خیلی خلاصه مراحل تبدیل شباهت زیادی با برنامه های دات نتی دارد. در دات نت کدهای با زبانهای دات نتی به MSIL ولی در دلفی به IR تبدیل می شوند(توجه داشته باشید که نحوه اجرای برنامه های مبتنی بر دلفی با دات نت تفاوت دارد).

    مثال: کد C زیر را در نظر بگیرید:
    struct RT {  char A;
    int B[10][20];
    char C;
    };
    struct ST {
    int X;
    double Y;
    struct RT Z;
    };


    int *foo(struct ST *s) {
    return &s[1].Z.B[5][13];
    }

    کد IR تولید شده از کد C بالا شبیه به این است:
    %struct.RT = type { i8, [10 x [20 x i32]], i8 }%struct.ST = type { i32, double, %struct.RT }


    define i32* @foo(%struct.ST* %s) nounwind uwtable readnone optsize ssp {
    entry:
    %arrayidx = getelementptr inbounds %struct.ST* %s, i64 1, i32 2, i32 1, i64 5, i64 13
    ret i32* %arrayidx
    }

    در اینجا به طور ساده اگر از Backend مربوط به Win32 و یا Win64 استفاده کنیم برنامه ما مبتنی بر ویندوز خواهد بود. البته توضیحات در مورد LLVM بسیار زیاد است که برای کسب اطلاعات بیشتر در مورد آن می توانید به سایت زیر مراجعه کنید:
    http://llvm.org/

    با توجه به توضیحات بالا جواب سوالات شما به این شرح است:
    آیا کد های دلفی به جاوا تبدیل میشوند؟
    خیر، در اندروید کدهای جاوایی تحت Dalvik اجرا می شوند ولی برنامه های مبتنی بر دلفی به صورت Native است. Dalvik برای CPU های مختلف سازگار شده است و یک مزیت بزرگ رو برای برنامه های مبتنی بر JAVA Byte Coce فراهم می کند و آن هم این است که برنامه های مبتنی بر جاوا می توانند بر روی هر گوشی اندرویدی اجرا شوند ولی برنامه های مبتنی بر دلفی اینگونه نیستند. همانطور که می دانید برنامه های مفسری و یا مبتنی بر ماشین مجازی(VM) در تئوری قابلیت حمل بیشتری دارند.
    چطور کدهای دلفی که با کامپایلر پاسکال کامپایل میشه در آندروید اجرا میشه؟یا در ios؟
    با توجه به توضیحاتی که در مورد LLVM دادم باید خودتون بتونید توضیح بدین. از آنجایی که برنامه های مبتنی بر دلفی مفسری نیستند باید برای هر پلتفرم به صورت اختصاصی کامپایل شوند.

    موفق باشید...
    آخرین ویرایش به وسیله BORHAN TEC : شنبه 23 فروردین 1393 در 17:26 عصر

تاپیک های مشابه

  1. پاسخ: 2
    آخرین پست: پنج شنبه 05 مرداد 1391, 10:39 صبح
  2. هجرت از دلفی به جاوا در نرم افزار های مالتی مدیا؟؟؟
    نوشته شده توسط seyed_27 در بخش Java SE : نگارش استاندارد جاوا
    پاسخ: 21
    آخرین پست: سه شنبه 16 خرداد 1391, 03:59 صبح
  3. پاسخ: 1
    آخرین پست: چهارشنبه 21 دی 1390, 15:21 عصر
  4. آیا نیاز به نصب تمام آپدیت های دلفی 2009 هست؟
    نوشته شده توسط AliReza Vafakhah در بخش مباحث عمومی دلفی و پاسکال
    پاسخ: 2
    آخرین پست: یک شنبه 01 آذر 1388, 22:46 عصر
  5. آیا برنامه های بانک صادرات که حدود 2 تا 3 هزار شعبه داره با همین دلفی می نویسن؟
    نوشته شده توسط محسن شمس در بخش برنامه نویسی در Delphi
    پاسخ: 19
    آخرین پست: شنبه 13 آبان 1385, 05:54 صبح

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •