xa - מקוון בענן

זוהי הפקודה xa שניתן להפעיל בספק האירוח החינמי של OnWorks באמצעות אחת מתחנות העבודה המקוונות המרובות שלנו, כגון Ubuntu Online, Fedora Online, אמולטור מקוון של Windows או אמולטור מקוון של MAC OS

תָכְנִית:

שֵׁם


xa - 6502/R65C02/65816 Cross-assembler

תַקצִיר


xa [אוֹפְּצִיָה] ... קובץ

תיאור


xa הוא רכיב צולב מרובה מעברים עבור מעבדי 8 סיביות בסדרת 6502 (כגון
ה-6502, 65C02, 6504, 6507, 6510, 7501, 8500, 8501 ו-8502), ה-Rockwell R65C02, וכן
מעבד 16 סיביות 65816. לתיאור של תחביר, ראה אסמבלר תחביר יותר פנימה
דף המדריך הזה.

אפשרויות


-v תפוקה רחבה.

-x השתמש בהתנהגות ישנה של שם קובץ (עוקף -o, -e ו -l). אפשרות זו היא כעת
הוצא משימוש.

-C אין קודי CMOS (ברירת המחדל היא לאפשר קודי R65C02)

-W אין קודי 65816 (ברירת מחדל).

-w אפשר 65816 opcodes.

-B הצג קווים עם בלוק פתוח/סגור (ראה PSEUDO-OPS).

-c הפקת קבצי אובייקט o65 במקום קבצי הפעלה (לא בוצע קישור); קבצים
עשוי להכיל הפניות לא מוגדרות.

-o שם הקובץ
הגדר שם קובץ פלט. ברירת המחדל היא a.o65; השתמש בשם הקובץ המיוחד - לפלט ל
פלט סטנדרטי.

-e שם הקובץ
הגדר את שם הקובץ ביומן שגיאות, ברירת המחדל היא אף אחת.

-l שם הקובץ
הגדר את שם הקובץ ברשימת התוויות, ברירת המחדל היא ללא. זוהי טבלת הסמלים וניתן להשתמש בה
על ידי מפרקים כגון dxa(1) לשחזר את המקור.

-r הוסף רשימת הפניות צולבות לרשימת התוויות (נדרש -l).

-M אפשר נקודתיים להופיע בהערות; עבור תאימות MASM. זה לא משפיע
פרשנות המעי הגס במקום אחר.

-R התחל את האסמבלר במצב רילוקיישן.

-תווית
מגדיר תווית כתווית מוחלטת (אך לא מוגדרת) גם בעת קישור.

-ב? Addr
הגדר בסיס פלח עבור פלח ? לכתובת Addr. ? צריך להיות t, d, b או z עבור
קטעי טקסט, נתונים, bss או אפס, בהתאמה.

-A Addr
הפוך את קטע הטקסט להתחיל בכתובת כזו שכאשר הקובץ מתחיל בכתובת
Addr, אין צורך ברילוקיישן. עוקפים -בט; קטעים אחרים עדיין צריכים להיות
מטופל עם -b.

-G דחק רשימה של גלובליים מיוצאים.

-DDEF=TEXT
הגדר מאקרו קדם-מעבד בשורת הפקודה (ראה מעבד מקדים).

-I dir הוסף ספרייה dir לנתיב הכלול (לפני XAINPUT; ראה הסביבה).

-O ערכה
הגדר את ערכת התווים הפלט עבור מחרוזות תווים. הנתמכים כרגע הם ASCII
(ברירת מחדל), PETSCII (Commodore ASCII), PETSCREEN (קודי מסך קומודור) ו-HIGH
(הגדר ביט גבוה על כל התווים).

-פ? הגדר את תו המעבד החלופי ל ?. זה שימושי כאשר אתה רוצה
להשתמש cpp(1) והקדם-מעבד המובנה בו-זמנית (ראה מעבד מקדים).
ייתכן שיהיה צורך לצטט תווים עבור המעטפת שלך (לדוגמה: -p'~' ).

- עזרה הצג סיכום של אפשרויות.

--גִרְסָה
הצג את הגרסה של התוכנית.

אסמבלר תחביר


היכרות עם תכנות שפת אסמבלי 6502 ואמנמונית היא מעבר לתחום של
דף המדריך הזה. אנו מזמינים אותך לחקור כל מספר מהספרים המצוינים בנושא
נושא; כותרת שימושית אחת היא "שפת מכונה למתחילים" מאת ריצ'רד מנספילד
(COMPUTE!), המכסה את מערכות ה-8 סיביות של Atari, Commodore ו-Apple, וזמין באופן נרחב
בשוק המשומשות.

xa תומך גם בקודי NMOS 6502 הסטנדרטיים וגם בקודי Rockwell CMOS בשימוש
ב-65C02 (R65C02). עם ה -w אוֹפְּצִיָה, xa יקבל גם קודים עבור 65816. NMOS
6502 קודים לא מתועדים אינם נתמכים בכוונה, ויש להזין אותם באופן ידני
באמצעות ‎.byte פסאודו-אופ (ראה PSEUDO-OPS). עקב התנגשויות בין R65C02 ו-65816
ערכות הוראות והוראות לא מתועדות על ה-NMOS 6502, השימוש בהן אינו מעודד.

באופן כללי, xa מקבל את הפורמט הסטנדרטי פחות או יותר 6502 assembler כפי שהוא פופולרי על ידי
MASM ו-TurboAssembler. ערכים וכתובות יכולים לבוא לידי ביטוי בתור מילוליים או בתור
ביטויים; לֵאמוֹר,

123 ערך עשרוני

$234 ערך הקסדצימלי

& 123 אוקטלי

% 010110 בינרי

* הערך הנוכחי של מונה התוכנית

ערך ASCII של כל תו מצוטט מוכנס ישירות לטקסט התוכנית
(דוגמא: "ל" מכניס את הבת "A" לזרם הפלט); ראה גם את PSEUDO-OPS
סָעִיף. זה מושפע מערך התווים שנבחר כעת, אם בכלל.

תוויות להגדיר מיקומים בתוך טקסט התוכנית, בדיוק כמו בהרכבים מרובים אחרים. א
תווית מוגדרת על ידי כל דבר שאינו opcode; למשל, קו כגון

תווית 1 לדה #0

מגדיר תווית 1 להיות המיקום הנוכחי של מונה התוכנית (ולכן הכתובת של
בע"מ opcode). ניתן להגדיר תווית במפורש על ידי הקצאת הערך של ביטוי,
כמו

תווית 2 = $d000

אשר מגדיר תווית 2 להיות הכתובת $d000, דהיינו, ההתחלה של אוגר VIC-II
חסימה במחשבי קומודור 64. מונה התוכניות * נחשב לסוג מיוחד
של תווית, וניתן להקצות אליו עם הצהרות כגון

* = $c000

מה שמגדיר את מונה התוכנית למיקום עשרוני 49152. למעט ה
מונה תוכניות, לא ניתן להקצות תוויות מספר פעמים. להצהיר במפורש
הגדרה מחדש של תווית, מקם - (מקף) לפניה, למשל,

-תווית2 = $d020

שקובע תווית 2 לרשום צבעי הגבול של Commodore 64. היקף התווית הוא
מושפע מהגוש שהוא שוכן בתוכו (ראה PSEUDO-OPS להוראות בלוק). תווית
עשוי גם להיות מוגדר קשה עם -L אפשרות שורת הפקודה.

עבור ההוראות שבהן המצבר הוא הטיעון המשתמע (כגון מעל פני הים ו LSR;
inc ו דצמבר על R65C02; וכו'), הלשון של ציון מפורשות את המצבר עם a is
מיותר מכיוון שהצורה המתאימה תיבחר אם אין ארגומנט מפורש. למעשה,
לעקביות עם מסירת התווית, אם יש תווית בשם a, זה יהיה למעשה
ליצור קוד המתייחס לתווית זו כמיקום זיכרון ולא למצבר.
אחרת, ההרכב יתלונן.

תוויות ואופקודים עשויים לקחת ביטויים כמו הטיעונים שלהם כדי לאפשר ערכים מחושבים, ו
עשויים להתייחס בעצמם לתוויות אחרות ו/או לדלפק התוכנית. ביטוי כגון
מעבדה1+1 (שפועל על הערך הנוכחי של התווית Lab1 ומגדיל אותו באחד) עשוי
השתמש באופרנדים הבאים, הניתנים מהעדיפות הגבוהה ביותר לנמוכה ביותר:

* כפל (עדיפות 10)

/ חלוקה שלמים (עדיפות 10)

+ תוספת (עדיפות 9)

- חיסור (9)

<< העבר שמאלה (8)

>> העבר ימינה (8)

>= => גדול או שווה ל-(7)

< גדול מ- (7)

<= =< פחות או שווה ל-(7)

< פחות מ- (7)

= שווה ל-(6)

<> >< לא שווה (6)

& AND (5)

^ XOR (4)

| או (3)

&& הגיוני ו-(2)

|| לוגי או (1)

סוגריים תקפים. בעת הגדרה מחדש של תווית, שילוב של אופרטורים אריתמטיים או סיביים
עם האופרטור = (שווה) כגון += וכן הלאה תקפים, למשל,

-תווית מחדש += (תווית 12/4)

בדרך כלל, xa מנסה לברר את ערכו של האופרנד ו(כאשר מתייחסים ל-a
מיקום זיכרון) השתמש בכתובת אפס, 16 סיביות או (עבור 65816) 24 סיביות במידת הצורך
והיכן נתמך על ידי ה-opcode המסוים. זה יוצר קוד קטן ומהיר יותר, ו
עדיף כמעט תמיד.

עם זאת, אתה יכול להשתמש באופרטורים אלה של קידומת כדי לכפות עיבוד מסוים של ה-
אופרנד. אלה שמייצרים תוצאה של שמונה סיביות יכולים לשמש גם בכתובת של 8 סיביות
מצבים, כגון מיידי ועמוד אפס.

< בייט נמוך של ביטוי, למשל, לדה #

> בייט גבוה של ביטוי

! במצבים שבהם ניתן היה להבין את הביטוי כאו מוחלט או
ערך עמוד אפס, אל תנסה לבצע אופטימיזציה לארגומנט אפס עמוד עבור אלה
קודים התומכים בו (כלומר, שמור כמילה של 16 סיביות)

@ עיבוד ככמות של 24 סיביות עבור 65816 (יש לציין -w אפשרות שורת הפקודה). זֶה is
נדרש ל לפרט כל 24 סיבית כַּמוּת!

` לכפות אופטימיזציה נוספת, גם אם אורך ההוראה אינו יכול להיות
נקבע בצורה מהימנה (ראה הערות ובאגים)

ביטויים יכולים להתרחש כארגומנטים לקודים או בתוך הפרה-מעבד (ראה מעבד מקדים
עבור תחביר). לדוגמה,

לדה תווית2+1

לוקח את הערך ב תווית2+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

מובנת כהערה ואחריה opcode. כדי להביס זאת, השתמש ב- -M שורת הפקודה
אפשרות לאפשר נקודתיים בתוך הערות. זה לא חל על /* */ ו // הערות,
אשר מטופלים ברמת הפרה-מעבד (qv).

PSEUDO-OPS


פסאודו-אופס הם קודים שקריים המשמשים את האסמבלר לציון פקודות מטא או מוטבעות.
כמו רוב המרכיבים, xa יש סט עשיר.

.byt ערך1,ערך2,ערך3,...
מציין מחרוזת של בתים שיש למקם ישירות באובייקט המורכב. ה
טיעונים עשויים להיות ביטויים. ניתן לציין כל מספר של בתים.

.asc "טקסט1" "טקסט2",...
מציין מחרוזת תווים שתוכנס לאובייקט המורכב.
מחרוזות מובנות בהתאם לקבוצת התווים שצוינה כעת; ל
לדוגמה, אם ASCII מצוין, הם יעובדו כ-ASCII, ואם PETSCII כן
שצוין, הם יתורגמו למקבילה המקבילה של Commodore ASCII.
ASCIIs אחרים שאינם סטנדרטיים כגון ATASCII עבור מחשבי Atari צריכים להשתמש ב-ASCII
תווים שוות ערך; יש לציין תווים גרפיים ותווים בקרה
משתמש במפורש .byt עבור הדמות המדויקת שאתה רוצה. שימו לב שכאשר מציינים
הטיעון של opcode, .asc לא נחוץ; הדמות המצוטטת יכולה פשוט
יוכנס (למשל, לדה #"א" ), ומושפע גם מערך התווים הנוכחי.
ניתן לציין כל מספר של מחרוזות תווים.

.byt ו .asc הם שם נרדף, אז אתה יכול לערבב דברים כגון .byt 43 $, 22, "a אופי
חוּט" ולקבל את התוצאה הצפויה. המחרוזת כפופה לקבוצת התווים הנוכחית,
אבל הבתים הנותרים מוכנסים ללא שינוי.

.aasc "טקסט1" "טקסט2",...
מציין מחרוזת תווים כלומר תמיד מוצג ב-ASCII אמיתי ללא קשר ל
מערכת התווים הנוכחית. כמו .asc, זה שם נרדף ל .byt.

.מִלָה ערך1,ערך2,ערך3...
מציין מחרוזת של מילים של 16 סיביות שיש להציב באובייקט המורכב ב-6502
פורמט little-endian (כלומר, בייט נמוך/גבוה בייט). הטיעונים עשויים להיות
ביטויים. ניתן לציין כל מספר מילים.

.dsb אורך, fillbyte
מציין בלוק נתונים; בסך הכל אורך חזרות על fillbyte יוכנס
לתוך החפץ שהורכב. לדוגמה, .dsb 5 דולר יכניס חמישה בתים, כל אחד
להיות 16 עשרוני, לתוך האובייקט. הטיעונים עשויים להיות ביטויים.

. סל offset,length,"שם קובץ"
משלב קובץ בינארי ללא פרשנות נוספת שצוין על ידי שם הקובץ החל מ-
לקזז לקזז לאורך אורך. זה מאפשר לך להוסיף נתונים כגון א
קובץ אובייקט שהורכב בעבר או תמונה או מבנה נתונים בינארי אחר,
מוטבע ישירות באובייקט של קובץ זה. אם אורך הוא אפס, ואז האורך של
שם הקובץ, בניכוי ההיסט, משמש במקום זאת. הטיעונים עשויים להיות ביטויים.

.( פותח בלוק חדש לבדיקת היקף. בתוך בלוק, כל התוויות שהוגדרו הן מקומיות לזה
בלוק וכל תת בלוקים, ויוצאים מהתחום ברגע שהגוש הסוגר נמצא
סגור (כלומר, בהיקף מילוני). כל התוויות שהוגדרו מחוץ לבלוק נשארות
גלוי בתוכו. כדי להכריז במפורש על תווית גלובלית בתוך בלוק, הקדי את ה-
תווית עם + או להקדים אותו עם & להכריז על זה רק ברמה הקודמת (או
גלובלית אם אתה רק ברמה אחת עמוקה). מותרות שש עשרה רמות של היקף.

.) סוגר בלוק.

.כפי ש .al .xs .xl
רלוונטי רק במצב 65816 (עם ה -w אפשרות שצוינה). סט הפסאודו-אופים האלה
באיזה גודל מצבר ואוגר X/Y יש להשתמש להוראות עתידיות; .כפי ש
ו .xs הגדר אופרנדים של 8 סיביות עבור אוגרי המצבר והאינדקס, בהתאמה,
ו .al ו .xl הגדר אופרנדים של 16 סיביות. הפסאודו-אופים האלה בכוונה לא
הנפקה אוטומטית ספטמבר ו נציג הוראות להגדרת הרוחב שצוין במעבד;
הגדר את סיביות המעבד כפי שאתה צריך, או שקול לבנות מאקרו. .al ו .xl
ליצור שגיאות אם -w לא מצוין.

הפסבדו אופציות הבאות חלות בעיקר על אובייקטים .o65 שניתנים למיקום מחדש. דיון מלא
של הפורמט הניתן להעברה הוא מעבר להיקף של דף ה-manage הזה, מכיוון שהוא כרגע פורמט
בשטף. התיעוד על הפורמט המוצע v1.2 נמצא doc/fileformat.txt בתוך xa
ספריית ההתקנה.

טקסט נתונים .bss .זרו
פסאודו-אופס אלו עוברים בין המקטעים השונים, כאשר .text הוא הקוד בפועל
סעיף, .data הוא מקטע הנתונים, .bss הוא שטח תווית לא מאותחל עבור
הקצאה ו-‎.zero לא מאותחל מקום אפס עמודים להקצאה. ב-.bss
ו-‎.zero, רק תוויות מוערכות. פסאודו-אופים אלה תקפים ביחסי ו
מצבים מוחלטים.

.align ערך
מיישר את הקטע הנוכחי לגבול בתים (2, 4 או 256) כפי שצוין על ידי ערך
(וממקם אותו בכותרת כאשר מצב יחסי מופעל). ערכים אחרים יוצרים
שגיאה.

.fopt סוג,value1,value2,value3,...
מתנהג כמו .byt/.asc אלא שהערכים מוטבעים בקובץ האובייקטים as
אפשרויות קובץ. הטיעון סוג משמש כדי לציין את אפשרות הקובץ להיות
הפניה. טבלה של אפשרויות אלה היא בפורמט קובץ o65 הניתן להעברה
תיאור. שאר האפשרויות מתפרשות כערכים להוספת. כל
ניתן לציין מספר ערכים, ועשויים להיות גם מחרוזות.

מעבד מקדים


xa מיישמת מעבד קדם דומה מאוד לזה של המעבד הקדם-שפת C cpp(1)
ותוספות רבות חלות על שניהם. לדוגמה, כמו ב-C, השימוש ב /* */ להערה
תוחמים גם נתמכים ב xa, וכך גם הערות המשתמשות באלכסון הכפול //. ה
מעבד קדם תומך גם בקווי המשך, כלומר, קווים המסתיימים בקו נטוי אחורי (\);
השורה הבאה מתווספת אליו כאילו לא הייתה שורה חדשה מפרידה. גם זה
מטופל ברמת הפרה-מעבד.

מסיבות של זיכרון ומורכבות, מלוא רוחב ה- cpp(1) התחביר אינו מלא
נתמך. בפרט, הגדרות מאקרו עשויות שלא להיות מוגדרות קדימה (כלומר, מאקרו
ההגדרה יכולה להפנות רק להגדרת מאקרו שהוגדרה קודם לכן), למעט מאקרו
פונקציות, שבהן הערכה רקורסיבית נתמכת; למשל, ל #define WW AA , AA חייב להיות
כבר הוגדר. הנחיות מסוימות אחרות אינן נתמכות, וגם לא רובן סטנדרטיות
פקודות מאקרו מוגדרות מראש, ויש מגבלות אחרות על הערכה ואורך השורה. בגלל ה
מתחזקים של xa להכיר בכך שחלק מהקבצים ידרשו הכנה מסובכת יותר מאשר
הקדם-מעבד המובנה יכול לספק, הקדם-מעבד יקבל cpp(1) בסגנון
פלט שורה/שם קובץ/דגלים. כאשר השורות הללו נראות בקובץ הקלט, xa יטפל
אותם כמו cc היה, אלא שמתעלמים מהדגלים. xa אינו מקבל קבצים על תקן
קלט מסיבות ניתוח, אז אתה צריך לזרוק את שלך cpp(1) פלט לתווך
קובץ זמני, כגון

cc -E test.s > 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). לאחר הוספתו, הקובץ ינותח גם הוא
להנחיות קדם-מעבד.

#הֵד הערה
מוסיף הערה הערה לתוך קובץ יומן השגיאות, שצוין עם ה- -e שורת הפקודה
אוֹפְּצִיָה.

#הדפס ביטוי
מחשב את ערך הביטוי ביטוי ומדפיס אותו לקובץ יומן השגיאות.

#define לְהַגדִיר טֶקסט
משווה מאקרו לְהַגדִיר עם טקסט טֶקסט כזה בכל מקום לְהַגדִיר מופיע ב
מקור הרכבה, טֶקסט מוחלף במקומו (בדיוק כמו cpp(1) יעשה זאת). ב
חיבור, #define יכול לציין פונקציות מאקרו כמו cpp(1) כך שהוראה
כמו #define mult(a,b) ((א)*(ב)) ייצור את התוצאה הצפויה בכל מקום בו
ביטוי של הצורה mult(a,b) מופיע במקור. ניתן גם לציין זאת
בשורת הפקודה עם ה- -D אוֹפְּצִיָה. הארגומנטים של פונקציית מאקרו עשויים להיות
מוערך רקורסיבית, שלא כמו אחרים #defines; המעבד המקדים ינסה לחדש
להעריך כל ארגומנט המתייחס להגדרה קדם-מעבד אחרת עד עשר פעמים
לפני שמתלוננים.

ההנחיות הבאות הן מותנות. אם התנאי אינו מתקיים, אזי
קוד המקור בין ההנחיה לסיום שלה #endif נמחקים ולא
התאספו. עד חמש עשרה רמות של קינון נתמכות.

#endif סוגר בלוק מותנה.

#else מיישמת נתיב חלופי לחסימה מותנית.

#ifdef לְהַגדִיר
נכון רק אם מאקרו לְהַגדִיר מוגדר.

#ifndef לְהַגדִיר
ההפך; נכון רק אם מאקרו לְהַגדִיר לא הוגדר קודם לכן.

#אם ביטוי
נכון אם ביטוי ביטוי מוערך ללא אפס. ביטוי עשוי להתייחס
פקודות מאקרו אחרות.

#שופכים תווית
נכון אם תווית תווית נעשה שימוש (אך לא בהכרח מופע עם ערך).
זֶה עובד on תוויות, לֹא פקודות מאקרו!

#ifldef תווית
נכון אם תווית תווית מוגדר ו מוקצה עם ערך. זֶה עובד on תוויות,
לֹא פקודות מאקרו!

בלוקים מותנים לא סגורים בסוף הקבצים הכלולים מייצרים אזהרות; לא סגור
בלוקים מותנים בסוף ההרכבה יוצרים שגיאה.

#שופכים ו #ifldef שימושיים לבניית ספרייה המבוססת על תוויות. לדוגמה,
אתה עשוי להשתמש במשהו כזה בקוד של הספרייה שלך:

#שופכים תווית
#ifldef תווית
#הֵד תווית כְּבָר מוּגדָר, ספריה פונקציה תווית לא יכול be מוכנס
#else
תווית /* שֶׁלְךָ קוד */
#endif
#endif

הסביבה


xa משתמש במשתני הסביבה הבאים, אם הם קיימים:

XAINPUT
כלול נתיב קובץ; יש להפריד בין רכיבים באמצעות `,'.

XAOUTPUT
נתיב קובץ פלט.

הערות ובאגים


ההוראות של R65C02 INA (מוצג לעתים קרובות inc a) ו DEA (דצמבר a) חייב להיות מוצג כ
חשוף inc ו דצמבר הוראות בהתאמה.

תוויות המוגדרות קדימה -- כלומר תוויות המוגדרות לאחר ההוראה הנוכחית
מעובד -- לא ניתן לבצע אופטימיזציה לאפס הוראות עמוד גם אם התווית אכן מסתיימת
up להיות מוגדר כמיקום עמוד אפס, מכיוון שה-assembler אינו יודע את הערך של
התווית מראש במהלך המעבר הראשון כאשר אורך הוראה מחושב.
במעבר השני, תינתן אזהרה כאשר הוראה שיכולה הייתה להיות
אופטימיזציה לא יכולה להיות בגלל מגבלה זו. (ברור שזה לא חל על
הוראות הסתעפות או קפיצה כי הן אינן ניתנות לאופטימיזציה בכל מקרה, ואלו
הוראות שיכולות רק קח פרמטר של 8 סיביות תמיד יוצב ל-8 סיביות
כמות.) אם לא ניתן להגדיר אחרת את התווית לפני ההוראה, ה
קידומת backtick ` עשוי לשמש כדי לכפות אופטימיזציה נוספת, לא משנה היכן נמצאת התווית
מוגדר כל עוד ההוראה תומכת בכך. כפייה ללא אבחנה על הנושא יכולה להיות
עם זאת, טומנת בחובה סכנה ואינה מומלצת; להרתיע את זה, ההרכב
יתלונן על השימוש בו במצבי טיפול במצבים שבהם לא קיימת אי בהירות, כגון
כמו אינדקס עקיף, מסועף וכן הלאה.

כמו כן, כתוצאה נוספת של אופן ניהול האופטימיזציה, אנו חוזרים על כך את כל
כמויות 24 סיביות ותוויות המתייחסות לכמות 24 סיביות במצב 65816, מלפנים
מוצהר או אחר, חובה להיות מוצב עם ה @ קידומת. אחרת, ההרכב יעשה זאת
נסה לבצע אופטימיזציה ל-16 סיביות, דבר שעלול להיות לא רצוי.

השתמש ב-xa באינטרנט באמצעות שירותי onworks.net



התוכניות המקוונות האחרונות של לינוקס ו-Windows