اطلاعیه

Collapse
No announcement yet.

اجرای کد برنامه از آدرسی مشخص (مثلا 0x30 ) از فلش در C

Collapse
X
 
  • فیلتر
  • زمان
  • Show
Clear All
new posts

    اجرای کد برنامه از آدرسی مشخص (مثلا 0x30 ) از فلش در C

    چگونه می توان در زبان c ، برای کامپایلر از آدرسی که من مشخص میکنم شروع به اجرای کد کند؟ مثلا می خواهم در آدرس های مشخصی از رم عملیات نوشتن انجام دهم و اطمینان پیدا کنم این روتین اولین روتین باشد که اجرا می شود( از بردار صفر)

    #2
    پاسخ : اجرای کد برنامه از آدرسی مشخص (مثلا 0x30 ) از فلش در C

    نوشته اصلی توسط mehdi210 نمایش پست ها
    چگونه می توان در زبان c ، برای کامپایلر از آدرسی که من مشخص میکنم شروع به اجرای کد کند؟ مثلا می خواهم در آدرس های مشخصی از رم عملیات نوشتن انجام دهم و اطمینان پیدا کنم این روتین اولین روتین باشد که اجرا می شود( از بردار صفر)
    ...
    این موضوعی که میگی یه بحث مفصل هست!
    و معمولا توی کامپایلرهای مختلف راه حل های استانداردی هم براش در نظر گرفته شده!
    من نقدا یه مطلب کمتر استاندارد ولی عملی بهت میگم!
    همه پردازنده ها (هسته پردازنده ها) یه کانتر (رجیستر) دارند به اسم پروگرام کانتر!
    که در هر لحظه فقط اون دستورالعملی اجرا میشه که آدرسش توی این پروگرام کانتر قرار داشته باشه!
    یعنی پردازنده موقعی که روشن میشه به صورت اتومات مقدار این کانتر صفر میشه و با اجرای دستورالعملها، مقدارش یکی یکی افزایش پیدا میکنه!
    حالا شما میتونی با دستکاری دستی مقدار این کانتر، به هرجایی از برنامه پرش کنی، (اساس دستورات شرطی و پرش و انشعاب هم همین هست)!
    یعنی دقیقا دستورات موجود در آدرس صفر به بعد طوری نوشته بشوند که شما را به مقصد مورد نظر هدایت کنند!
    فقط فکر کنم شاید در مورد آرم تغییر مد کاری هسته لازم باشه!
    ◙◙◙◙◙ میخوام به دوستان یه کتاب معرفی کنم! وقت کردید، بخونید - اسمش هست قرآن، سال نشر 10، نویسنده: خدا . ◙◙◙◙◙

    دیدگاه


      #3
      پاسخ : اجرای کد برنامه از آدرسی مشخص (مثلا 0x30 ) از فلش در C

      سپاسگزارم ، اما هدف من اجرای کد فوق زودتر از کدهای دیگر است یعنی از بردار ریست (البته پس از بردار وقفه ها )

      دیدگاه


        #4
        پاسخ : اجرای کد برنامه از آدرسی مشخص (مثلا 0x30 ) از فلش در C

        اگر تاکید خاصی روی روال کد دارین بهترین گزینه براتون اسمبلی هست.در اسمبلی شما کنترل کاملی روی نحوه اجرای کدها دارین ولی در زبان سی چندان دستتون باز نیست چون کامپایلر بر اساس اون سیستمی که براش در نظر گرفته شده کد رو کامپایل میکنه.برای همین گزینه های Optimize تاثیر زیادی روی روال دارن و از یک کامپایلر به کامپایلر دیگه شدیدا فرق میکنن.اگر میخواین یک تابع همیشه در اول اجرا فراخوانی بشه که مشخصا در ابتدای تابع main قرار باید بدین.
        Aristar Group - Always And Forever

        دیدگاه

        لطفا صبر کنید...
        X