انگلیسیفرانسویاسپانیایی

Ad


فاویکون OnWorks

xa - آنلاین در ابر

xa را در ارائه دهنده هاست رایگان OnWorks از طریق Ubuntu Online، Fedora Online، شبیه ساز آنلاین ویندوز یا شبیه ساز آنلاین MAC OS اجرا کنید.

این دستور xa است که می تواند در ارائه دهنده میزبانی رایگان OnWorks با استفاده از یکی از چندین ایستگاه کاری آنلاین رایگان ما مانند Ubuntu Online، Fedora Online، شبیه ساز آنلاین ویندوز یا شبیه ساز آنلاین MAC OS اجرا شود.

برنامه:

نام


xa - 6502/R65C02/65816 مونتاژ کننده متقابل

خلاصه


xa [گزینه] ... فایل

شرح


xa یک اسمبلر متقابل چند گذر برای پردازنده های 8 بیتی سری 6502 است (مانند
6502، 65C02، 6504، 6507، 6510، 7501، 8500، 8501 و 8502)، Rockwell R65C02، و
پردازنده 16 بیتی 65816 برای توضیح نحو، نگاه کنید مونتاژ کننده نحو بیشتر در
این صفحه راهنما

OPTIONS


-v خروجی کلام

-x از رفتار نام فایل قدیمی استفاده کنید -o, -e و -l). این گزینه اکنون است
منسوخ.

-C بدون اپکد CMOS (پیش‌فرض اجازه دادن به کدهای عملیاتی R65C02 است)

-W بدون کدهای عملیاتی 65816 (پیش‌فرض).

-w 65816 اپکد مجاز است.

-B نمایش خطوط با بلوک باز/بستن (نگاه کنید به PSEUDO-OPS).

-c تولید فایل های شی o65 به جای فایل های اجرایی (هیچ پیوندی انجام نمی شود). فایل ها
ممکن است حاوی ارجاعات تعریف نشده باشد.

-o نام فایل
نام فایل خروجی را تنظیم کنید پیش فرض است a.o65; از نام فایل خاص استفاده کنید - خروجی به
خروجی استاندارد

-e نام فایل
نام فایل errorlog را تنظیم کنید، پیش فرض هیچ است.

-l نام فایل
نام فایل labellist را تنظیم کنید، پیش‌فرض هیچ کدام نیست. این جدول نماد است و می توان از آن استفاده کرد
توسط جداکننده هایی مانند dxa(1) برای بازسازی منبع.

-r افزودن لیست ارجاع متقابل به لیست برچسب (الزامی است -l).

-M اجازه دهید دو نقطه در نظرات ظاهر شوند. برای سازگاری MASM. این تاثیری ندارد
تفسیر کولون در جای دیگر

-R اسمبلر را در حالت تغییر مکان شروع کنید.

-لبل
تعریف می کند برچسب به عنوان یک برچسب مطلق (اما تعریف نشده) حتی در هنگام پیوند.

-ب؟ افزونه
پایه بخش را برای بخش تنظیم کنید ? به آدرس افزونه. ? باید t، d، b یا z باشد
متن، داده، bss یا بخش صفر، به ترتیب.

-A افزونه
قسمت متن را با آدرسی شروع کنید که وقتی فایل از آدرس شروع می شود
افزونه، جابجایی ضروری نیست. لغو می کند -bt; بخش های دیگر هنوز باید باشند
مراقبت با -b.

-G فهرست جهانی های صادر شده را سرکوب کنید.

-DDEF=TEXT
یک ماکرو پیش پردازنده را در خط فرمان تعریف کنید (نگاه کنید به پیش پردازشگر).

-I دیر دایرکتوری اضافه کنید دیر به مسیر شامل (قبل از XAINPUT؛ دیدن محیط زیست).

-O کاراکتر
مجموعه نویسه های خروجی را برای رشته های کاراکتر تعریف کنید. در حال حاضر ASCII پشتیبانی می شود
(پیش فرض)، PETSCII (Commodore ASCII)، PETSCREEN (کدهای صفحه نمایش Commodore) و HIGH
(بر روی همه شخصیت ها کمی بالا قرار دهید).

-پ؟ کاراکتر پیش پردازنده جایگزین را روی آن تنظیم کنید ?. این زمانی مفید است که بخواهید
استفاده کنید cpp(1) و پیش پردازنده داخلی به طور همزمان (نگاه کنید به پیش پردازشگر).
ممکن است لازم باشد نویسه‌ها برای پوسته شما نقل قول شوند (مثال: -p'~' ).

--کمک نمایش خلاصه گزینه ها

- نسخه
نمایش نسخه برنامه

مونتاژ کننده نحو


مقدمه ای بر برنامه نویسی زبان اسمبلی و حافظه نویسی 6502 فراتر از حوزه است.
این صفحه راهنما ما از شما دعوت می کنیم که هر تعداد از کتاب های عالی را در این زمینه بررسی کنید
موضوع؛ یک عنوان مفید «زبان ماشین برای مبتدیان» نوشته ریچارد منسفیلد است
(COMPUTE!)، سیستم های 8 بیتی Atari، Commodore و Apple را پوشش می دهد و به طور گسترده در دسترس است.
در بازار کارکرده

xa هم از کدهای اپکد استاندارد NMOS 6502 و هم از کدهای آپکد Rockwell CMOS مورد استفاده پشتیبانی می کند.
در 65C02 (R65C02). با -w گزینه، xa همچنین کدهای عملیاتی 65816 را می پذیرد. NMOS
کدهای عملیاتی غیرمستند 6502 عمداً پشتیبانی نمی شوند و باید به صورت دستی وارد شوند
با استفاده از بایت شبه عملیات (نگاه کنید به PSEUDO-OPS). به دلیل تداخل بین R65C02 و 65816
مجموعه دستورالعمل ها و دستورالعمل های غیر مستند در NMOS 6502، استفاده از آنها ممنوع است.

به طور کلی، xa فرمت اسمبلر کمابیش استاندارد 6502 را می پذیرد که توسط آن رایج شده است
MASM و TurboAssembler. ارزش ها و آدرس ها را می توان به صورت تحت اللفظی یا به صورت بیان کرد
اصطلاحات؛ شوخ طبعی،

123 مقدار اعشاری

$234 مقدار هگزادسیمال

& 123 اکتال

٪ 010110 دوتایی

* مقدار فعلی شمارنده برنامه

مقدار ASCII هر کاراکتر نقل قول شده مستقیماً در متن برنامه درج می شود
(مثال: "به" بایت "A" را در جریان خروجی قرار می دهد). را نیز ببینید PSEUDO-OPS
بخش. این تحت تأثیر مجموعه کاراکترهای انتخاب شده در حال حاضر، در صورت وجود، قرار می گیرد.

برچسب ها مانند سایر اسمبلرهای چند پاس، مکان‌ها را در متن برنامه تعریف کنید. آ
برچسب با هر چیزی که Opcode نیست تعریف می شود. به عنوان مثال، خطی مانند

1 لادا #0

تعریف می کند 1 مکان فعلی شمارنده برنامه باشد (بنابراین آدرس
LDA Opcode). یک برچسب را می توان با اختصاص دادن مقدار یک عبارت به آن به صراحت تعریف کرد.
مانند

2 = d000 دلار

که تعریف می کند 2 آدرس d000 $، یعنی شروع ثبت VIC-II باشد
مسدود کردن در کامپیوترهای Commodore 64. شمارنده برنامه * نوعی خاص محسوب می شود
از برچسب، و می تواند با عباراتی مانند

* = c000 دلار

که شمارنده برنامه را روی مکان اعشاری 49152 قرار می دهد. به استثنای
شمارنده برنامه، برچسب ها را نمی توان چندین بار اختصاص داد. به صراحت اعلام کند
تعریف مجدد یک برچسب، یک - (خط تیره) را قبل از آن قرار دهید، به عنوان مثال،

-label2 = d020 دلار

که مجموعه می کند 2 به ثبت رنگ حاشیه Commodore 64. محدوده یک برچسب است
تحت تأثیر بلوکی که در آن قرار دارد (نگاه کنید به PSEUDO-OPS برای دستورالعمل های بلوک). یک برچسب
همچنین ممکن است با سخت مشخص شود -L گزینه خط فرمان

برای دستورالعمل هایی که انباشت کننده آرگومان ضمنی است (مانند اصل و lsr;
وارز و دسامبر در R65C02؛ و غیره)، اصطلاح مشخص کردن صریح انباشت کننده با a is
غیر ضروری است زیرا در صورت عدم وجود استدلال صریح، فرم مناسب انتخاب خواهد شد. در حقیقت،
برای سازگاری با تحویل برچسب، اگر برچسبی به نام وجود داشته باشد a، این در واقع خواهد شد
کدی را ایجاد کنید که به آن برچسب به عنوان یک مکان حافظه ارجاع می دهد و نه انباشته کننده.
در غیر این صورت مونتاژ کننده شکایت خواهد کرد.

برچسب‌ها و کدهای باز ممکن است گرفته شوند اصطلاحات به عنوان آرگومان های آنها برای اجازه دادن به مقادیر محاسبه شده، و
ممکن است خود به برچسب های دیگر و/یا شمارنده برنامه ارجاع دهند. عبارتی مانند
آزمایشگاه 1+1 (که بر روی مقدار فعلی برچسب عمل می کند آزمایشگاه 1 و آن را یک افزایش می دهد) ممکن است
از عملوندهای زیر استفاده کنید که از بیشترین اولویت به کمترین اولویت داده شده است:

* ضرب (اولویت 10)

/ تقسیم عدد صحیح (اولویت 10)

+ اضافه (اولویت 9)

- تفریق (9)

<< جابجایی به چپ (8)

>> جابجایی به راست (8)

>= => بزرگتر یا مساوی (7)

< بزرگتر از (7)

<= =< کمتر یا مساوی (7)

< کمتر از (7)

= برابر با (6)

<> >< برابر نیست (6)

& بیتی و (5)

^ XOR بیتی (4)

| بیتی یا (3)

&& منطقی و (2)

|| منطقی یا (1)

پرانتز معتبر است. هنگام تعریف مجدد یک برچسب، ترکیب عملگرهای حسابی یا بیتی
با عملگر = (برابر) مانند += و غیره معتبر هستند، به عنوان مثال،

دوباره برچسب زدن += (برچسب12/4)

به طور معمول، xa تلاش برای تعیین مقدار عملوند و (هنگامی که به a
مکان حافظه) در صورت لزوم از صفحه صفر، 16 بیتی یا (برای 65816) آدرس دهی 24 بیتی استفاده کنید.
و در جایی که توسط کد عملیاتی خاص پشتیبانی می شود. این کد کوچکتر و سریعتر تولید می کند و
تقریبا همیشه ارجح است

با این وجود، می‌توانید از این عملگرهای پیشوند برای اجبار یک رندر خاص استفاده کنید
عملوند آنهایی که نتیجه هشت بیتی تولید می کنند می توانند در آدرس دهی 8 بیتی نیز استفاده شوند
حالت هایی مانند صفحه فوری و صفر.

< بایت کم بیان، به عنوان مثال، لادا #

> بایت بیان بالا

! در موقعیت‌هایی که عبارت را می‌توان به صورت مطلق یا
مقدار صفحه صفر است، سعی نکنید برای آن آرگومان صفحه صفر بهینه سازی کنید
اپکدهایی که از آن پشتیبانی می کنند (یعنی به عنوان کلمه 16 بیتی نگه دارید)

@ به عنوان مقدار 24 بیتی برای 65816 ارائه شود (باید مشخص شود -w گزینه خط فرمان). این is
ضروری به مشخص كردن هر 24-بیتی تعداد!

` بهینه سازی بیشتر را مجبور کنید، حتی اگر طول دستورالعمل نتواند باشد
به طور قابل اعتماد تعیین شده است (نگاه کنید به NOTES'N'BUGS)

عبارات می توانند به عنوان آرگومان هایی برای کدهای عملیاتی یا درون پیش پردازنده رخ دهند (نگاه کنید به پیش پردازشگر
برای نحو). مثلا،

لادا label2+1

مقدار را در می گیرد label2+1 (با استفاده از مقدار برچسب قبلی ما، این مقدار d021 دلار خواهد بود)، و
به عنوان مونتاژ خواهد شد $ad $21 d0 دلار به دیسک به همین ترتیب،

لادا #

کمترین 8 بیت را خواهد گرفت 2 (یعنی 20 دلار)، و آنها را به اکومولاتور اختصاص دهید
(مجموعه دستورالعمل به عنوان a9 دلار $20 به دیسک).

نظرات با نقطه ویرگول (;)، مانند

؛این is a توضیح

آنها همچنین می توانند در سبک زبان C، با استفاده از /* */ و // که هستند
درک شده در پیش پردازشگر سطح (qv).

به طور معمول، کولون (:) عباراتی را از هم جدا می کند، مانند

4 لادا #0: sta d020 دلار

or

label2: لادا #2

(به استفاده از دو نقطه برای تعیین برچسب، مشابه برخی از اسمبلرهای دیگر، که
xa همچنین با یا بدون کولون می فهمد). این همچنین در مورد نظرات نقطه ویرگول صدق می کند،
به طوری که

; a نظر:lda #0

به عنوان یک نظر و پس از یک کد عملیاتی درک می شود. برای شکست دادن این، از -M خط فرمان
گزینه ای برای اجازه دادن دو نقطه در نظرات. این مورد صدق نمی کند /* */ و // نظرات،
که در سطح پیش پردازنده (qv) به آن پرداخته می شود.

PSEUDO-OPS


شبه عملیات اپکدهای نادرستی هستند که توسط اسمبلر برای نشان دادن دستورات متا یا درون خطی استفاده می شوند.
مانند اکثر اسمبلرها، xa مجموعه ای غنی دارد

بیت value1,value2,value3,...
رشته ای از بایت ها را مشخص می کند که مستقیماً در شیء مونتاژ شده قرار گیرند. در
آرگومان ها ممکن است عبارت باشند. هر تعداد بایت را می توان مشخص کرد.

جذاب است "متن 1" "متن2"،...
یک رشته کاراکتری را مشخص می کند که در شیء مونتاژ شده درج می شود.
رشته ها با توجه به مجموعه کاراکترهای مشخص شده فعلی درک می شوند. برای
به عنوان مثال، اگر ASCII مشخص شده باشد، آنها به عنوان ASCII ارائه می شوند و اگر PETSCII باشد
مشخص شده، آنها به معادل Commodore ASCII ترجمه خواهند شد.
سایر ASCII های غیر استاندارد مانند ATASCII برای رایانه های Atari باید از ASCII استفاده کنند
کاراکترهای معادل؛ کاراکترهای گرافیکی و کنترلی باید مشخص شوند
به صراحت با استفاده از بیت برای شخصیت دقیقی که می خواهید توجه داشته باشید که هنگام تعیین
آرگومان یک کد عملیاتی، جذاب است لازم نیست؛ شخصیت نقل شده به سادگی می تواند
درج شود (مثلا لادا #"آ" ، و همچنین تحت تأثیر مجموعه کاراکترهای فعلی قرار می گیرد.
هر تعداد رشته کاراکتر را می توان مشخص کرد.

بیت و جذاب است مترادف هستند، بنابراین می توانید چیزهایی مانند بیت دلار 43، شماره ۱۰۲۹، "a شخصیت
رشته" و نتیجه مورد انتظار را بدست آورید. رشته تابع مجموعه کاراکترهای فعلی است،
اما بایت های باقی مانده بدون تغییر درج می شوند.

.aasc "متن 1" "متن2"،...
یک رشته کاراکتر را مشخص می کند همیشه ارائه شده در ASCII واقعی بدون توجه به
مجموعه کاراکتر فعلی پسندیدن جذاب است، مترادف است با بیت.

.کلمه value1,value2,value3...
یک رشته از کلمات 16 بیتی را برای قرار دادن در شیء اسمبل شده در 6502 مشخص می کند.
قالب little-endian (یعنی کم بایت/بالا بایت). استدلال ها ممکن است باشد
اصطلاحات. هر تعداد کلمه را می توان مشخص کرد.

dsb طول، پر بایت
یک بلوک داده را مشخص می کند. در مجموع از طول تکرارهای پر بایت درج خواهد شد
به جسم مونتاژ شده مثلا، dsb 5، 10 دلار هر کدام پنج بایت را وارد می کند
16 اعشاری بودن، به جسم. آرگومان ها ممکن است عباراتی باشند.

.بین افست، طول، نام فایل
داخل یک فایل باینری بدون تفسیر بیشتر مشخص شده توسط نام فایل از جانب
چاپ افست چاپ افست به طول طول. این به شما امکان می دهد داده هایی مانند a را وارد کنید
فایل شی که قبلا مونتاژ شده یا یک تصویر یا دیگر ساختار داده باینری،
مستقیماً در شیء این فایل قرار داده شده است. اگر طول صفر است، سپس طول
نام فایلبه جای آن، منهای افست استفاده می شود. آرگومان ها ممکن است عباراتی باشند.

.( یک بلوک جدید برای محدوده باز می کند. در یک بلوک، همه برچسب‌های تعریف شده محلی برای آن هستند
بلوک و هر بلوک فرعی، و به محض اینکه بلوک محصور شد از محدوده خارج شوید
بسته (یعنی دارای دامنه واژگانی). تمام برچسب های تعریف شده خارج از بلوک ثابت هستند
در داخل آن قابل مشاهده است. برای اعلام صریح یک برچسب جهانی در یک بلوک، قبل از آن قرار دهید
برچسب با + یا مقدم بر آن باشد & برای اعلام آن فقط در سطح قبلی (یا
در سطح جهانی اگر فقط یک سطح عمیق دارید). شانزده سطح محدوده مجاز است.

.) یک بلوک را می بندد.

.مانند .ال xs xl
فقط مربوط به حالت 65816 (با -w گزینه مشخص شده است). این شبه عملیات مجموعه
چه اندازه انباشته و X/Y-رجیستر باید برای دستورالعمل های آینده استفاده شود. .مانند
و xs عملوندهای 8 بیتی را به ترتیب برای رجیسترهای انباشتگر و شاخص تنظیم کنید.
و .ال و xl عملوندهای 16 بیتی را تنظیم کنید. این شبه عملیات های عمدی انجام نمی دهند
به صورت خودکار صادر می شود سپتامبر و هرزه دستورالعمل تنظیم عرض مشخص شده در CPU؛
بیت های پردازنده را همانطور که نیاز دارید تنظیم کنید یا به ساخت یک ماکرو فکر کنید. .ال و xl
ایجاد خطا اگر -w مشخص نشده است

شبه عملیات زیر عمدتاً برای اشیاء .o65 قابل جابجایی اعمال می شود. یک بحث کامل
فرمت قابل جابجایی خارج از محدوده این صفحه مدیریتی است، زیرا در حال حاضر یک قالب است
در شار مستندات مربوط به فرمت پیشنهادی v1.2 موجود است doc/fileformat.txt در داخل xa
فهرست نصب

متن .داده ها .bss صفر
این شبه عملیات‌ها بین بخش‌های مختلف سوئیچ می‌کنند، متن. کد واقعی است
بخش، .data بخش داده است، bss. فضای برچسب بدون مقدار اولیه برای
تخصیص و صفر بودن .صفر فضای صفحه صفر برای تخصیص. در bss
و صفر، فقط برچسب ها ارزیابی می شوند. این شبه عملیات در نسبی و معتبر است
حالت های مطلق

تراز کردن ارزش
بخش فعلی را با یک مرز بایت (2، 4 یا 256) تراز می کند همانطور که توسط مشخص شده است ارزش
(و زمانی که حالت نسبی فعال است آن را در هدر قرار می دهد). ارزش های دیگر ایجاد می کنند
یک خطا.

.fopt نوع، مقدار 1، مقدار 2، مقدار 3، ...
عمل می کند مانند .byt/.asc با این تفاوت که مقادیر در فایل شی به صورت تعبیه شده است
گزینه های فایل بحث و جدل نوع برای مشخص کردن گزینه فایل استفاده می شود
ارجاع داده شد. جدولی از این گزینه ها در قالب فایل o65 قابل جابجایی است
شرح. بقیه گزینه ها به عنوان مقادیری برای درج تفسیر می شوند. هر
ممکن است تعداد مقادیر مشخص شود و همچنین ممکن است رشته باشد.

پیش پردازشگر


xa یک پیش پردازنده بسیار شبیه به پیش پردازنده زبان C پیاده سازی می کند cpp(1)
و بسیاری از عجیب و غریب برای هر دو اعمال می شود. به عنوان مثال، همانطور که در C، استفاده از /* */ برای اظهار نظر
جداکننده ها نیز در آن پشتیبانی می شوند xa، و نظرات با استفاده از اسلش دوبل نیز همینطور هستند //.
پیش پردازنده همچنین از خطوط ادامه دهنده پشتیبانی می کند، به عنوان مثال، خطوطی که با یک بک اسلش ختم می شوند (\).
سپس خط زیر به آن اضافه می شود که گویی هیچ خط جدید تقسیم کننده ای وجود ندارد. این هم همینطور
در سطح پیش پردازنده مدیریت می شود.

به دلایل حافظه و پیچیدگی، وسعت کامل cpp(1) نحو به طور کامل نیست
پشتیبانی. به طور خاص، تعاریف کلان ممکن است از پیش تعریف نشوند (یعنی کلان
تعریف فقط می تواند به یک تعریف کلان تعریف شده قبلی اشاره کند، به جز ماکرو
توابع، که در آن ارزیابی بازگشتی پشتیبانی می شود. به عنوان مثال، به #تعريف كردن WW AA , AA باید
قبلا تعریف شده است برخی از دستورالعمل های دیگر پشتیبانی نمی شوند و اکثر آنها استاندارد نیستند
ماکروهای از پیش تعریف شده، و محدودیت های دیگری در ارزیابی و طول خط وجود دارد. از آنجا که
نگهبانان از xa تشخیص دهید که برخی از فایل ها به آماده سازی پیچیده تری نیاز دارند
پیش پردازنده داخلی می تواند تامین کند، پیش پردازنده می پذیرد cpp(1)-سبک
خروجی خط/نام فایل/پرچم ها. وقتی این خطوط در فایل ورودی دیده می شوند، xa معالجه خواهد کرد
آنها را به عنوان cc خواهد بود، با این تفاوت که پرچم ها نادیده گرفته می شوند. xa فایل های استاندارد را نمی پذیرد
ورودی به دلایل تجزیه، بنابراین شما باید خود را تخلیه کنید cpp(1) خروجی به یک واسطه
فایل موقت مانند

cc -E تست > test.xa
xa test.xa

نیازی به ارائه استدلال خاصی نیست xa؛ حضور cpp(1) خروجی شناسایی می شود
به صورت خودکار.

توجه داشته باشید که ارسال فایل خود را از طریق cpp(1) ممکن است تداخل داشته باشد xaپیش پردازنده خود
بخشنامه ها در این مورد، برای پوشاندن دستورالعمل ها از cpp(1)، استفاده کنید -p گزینه ای برای تعیین یک
شخصیت جایگزین به جای #مانند تار و مد (به عنوان مثال، -p'~' ). با این گزینه و
آرگومان مشخص شد، سپس به جای #includeبه عنوان مثال، شما همچنین می توانید استفاده کنید ~ شامل کردن، در
علاوه بر #include (که همچنان مورد پذیرش قرار خواهد گرفت xa پیش پردازنده، با فرض
هر زنده ماندن cpp(1)). از هر شخصیتی می توان استفاده کرد، اگرچه صراحتاً ممکن است گزینه های آسیب شناسی
منجر به اشکالات سرگرم کننده و خسته کننده در طول تجزیه می شود. همچنین می توانید از این گزینه برای
به تعویق انداختن دستورالعمل های پیش پردازنده که cpp(1) ممکن است خیلی زود تفسیر شود تا زمانی که فایل واقعاً باشد
می شود به xa خود برای پردازش

دستورالعمل های پیش پردازنده زیر پشتیبانی می شوند.

#include "نام فایل"
محتویات فایل را درج می کند نام فایل در این موقعیت اگر فایل پیدا نشد،
با استفاده از مسیرهای مشخص شده توسط -I گزینه خط فرمان یا
متغیر محیطی XAINPUT (qv). پس از درج، فایل نیز تجزیه خواهد شد
برای دستورالعمل های پیش پردازنده

#پژواک توضیح
نظر را درج می کند توضیح در فایل errorlog مشخص شده با -e خط فرمان
گزینه.

#چاپ بیان
مقدار بیان را محاسبه می کند بیان و آن را در فایل errorlog چاپ می کند.

#تعريف كردن تعريف كردن متن
معادل کلان است تعريف كردن با متن متن به گونه ای که هر کجا تعريف كردن به نظر می رسد در
منبع مونتاژ، متن در جای خود جایگزین می شود (درست مانند cpp(1) انجام خواهد داد). که در
علاوه بر این ، #تعريف كردن می تواند توابع ماکرو مانند را مشخص کند cpp(1) به طوری که یک بخشنامه
پسندیدن #تعريف كردن چند (a,b) ((الف)*(ب)) نتیجه مورد انتظار را در هر کجا ایجاد می کند
بیان فرم چند (a,b) در منبع ظاهر می شود. این را نیز می توان مشخص کرد
در خط فرمان با -D گزینه. آرگومان های یک تابع ماکرو ممکن است باشد
بر خلاف سایر موارد به صورت بازگشتی ارزیابی می شود #تعريف كردنs; پیش پردازنده تلاش خواهد کرد تا دوباره
هر آرگومان را که به تعریف پیش پردازنده دیگری ارجاع می دهد تا ده بار ارزیابی کنید
قبل از شکایت

بخشنامه های زیر مشروط هستند. اگر مشروط برآورده نشد، پس
کد منبع بین دستورالعمل و پایان آن # اندیف حذف شده اند و نه
مونتاژ. تا پانزده سطح از تودرتو پشتیبانی می شود.

# اندیف بلوک شرطی را می بندد.

# دیگر مسیر جایگزین را برای بلوک شرطی پیاده سازی می کند.

#ifdef تعريف كردن
فقط در صورت ماکرو درست است تعريف كردن تعریف شده است.

#ifndef تعريف كردن
مخالف؛ فقط در صورت ماکرو درست است تعريف كردن قبلا تعریف نشده است

#اگر بیان
بیان اگر درست است بیان غیر صفر ارزیابی می کند. بیان ممکن است ارجاع دهد
سایر ماکروها

#آفت زده برچسب
اگر برچسب درست است برچسب استفاده شده است (اما نه لزوماً با یک مقدار).
این با این نسخهها کار on برچسب ها، نه ماکروها!

#ifldef برچسب
اگر برچسب درست است برچسب تعریف شده است و با یک مقدار اختصاص داده شده است. این با این نسخهها کار on برچسب ها،
نه ماکروها!

بلوک‌های شرطی بسته نشده در انتهای فایل‌های گنجانده شده اخطار ایجاد می‌کنند. بسته نشده
بلوک های شرطی در پایان مونتاژ یک خطا ایجاد می کنند.

#آفت زده و #ifldef برای ایجاد یک کتابخانه بر اساس برچسب ها مفید هستند. مثلا،
ممکن است از چیزی شبیه به این در کد کتابخانه خود استفاده کنید:

#آفت زده برچسب
#ifldef برچسب
#پژواک برچسب قبلا تعریف شده است، کتابخانه تابع برچسب نمی توان be درج شده
# دیگر
برچسب /* خود را رمز */
# اندیف
# اندیف

محیط زیست


xa از متغیرهای محیطی زیر در صورت وجود استفاده می کند:

XAINPUT
شامل مسیر فایل. کامپوننت ها باید با «،» از هم جدا شوند.

XAOUTPUT
مسیر فایل خروجی

NOTES'N'BUGS


دستورالعمل های R65C02 قانون مهاجرت و ملیت (اغلب ارائه می شود وارز a) و DEA (دسامبر a) باید به صورت ارائه شود
لخت وارز و دسامبر دستورالعمل ها به ترتیب

برچسب‌های تعریف‌شده به جلو -- یعنی برچسب‌هایی که پس از دستورالعمل فعلی تعریف می‌شوند
پردازش می شود -- نمی توان آن را به دستورالعمل های صفحه صفر بهینه کرد حتی اگر برچسب تمام شود
به عنوان یک مکان صفحه صفر تعریف می شود، زیرا اسمبلر مقدار آن را نمی داند
برچسب را از قبل در طی اولین پاس زمانی که طول یک دستورالعمل محاسبه می شود.
در پاس دوم، یک اخطار صادر می شود که دستورالعملی می تواند باشد
بهینه سازی نمی تواند به دلیل این محدودیت باشد. (بدیهی است که این مورد صدق نمی کند
دستورالعمل های انشعاب یا پرش، زیرا به هر حال بهینه نیستند، و اینها
دستورالعمل هایی که می تواند فقط یک پارامتر take 8 بیتی همیشه به یک 8 بیت ارسال می شود
مقدار.) اگر برچسب را نمی توان قبل از دستورالعمل تعریف کرد،
پیشوند بک تیک ` بدون توجه به اینکه برچسب کجاست، ممکن است برای بهینه سازی بیشتر استفاده شود
تا زمانی که دستورالعمل آن را پشتیبانی می کند، تعریف می شود. تحمیل بی رویه موضوع می تواند باشد
با این حال مملو از خطر است و توصیه نمی شود. برای جلوگیری از این کار، مونتاژ کننده
از استفاده از آن در رسیدگی به موقعیت‌های حالت که هیچ ابهامی وجود ندارد، شکایت خواهد کرد
به صورت غیرمستقیم نمایه شده، انشعاب و غیره.

همچنین، به عنوان یک نتیجه بیشتر از نحوه مدیریت بهینه‌سازی، آن را تکرار می‌کنیم تمام
مقادیر و برچسب‌های 24 بیتی که به یک کمیت 24 بیتی در حالت 65816 اشاره می‌کنند.
اعلام شده یا در غیر این صورت، باید با @ پیشوند در غیر این صورت مونتاژ کننده این کار را انجام خواهد داد
سعی کنید تا 16 بیت را بهینه کنید، که ممکن است نامطلوب باشد.

با استفاده از خدمات onworks.net از xa به صورت آنلاین استفاده کنید


سرورها و ایستگاه های کاری رایگان

دانلود برنامه های ویندوز و لینوکس

دستورات لینوکس

Ad