Amazon Best VPN GoSearch

סמל OnWorks

sdcc

הפעל sdcc בספק אירוח בחינם של OnWorks על אובונטו מקוון, פדורה מקוון, אמולטור מקוון של Windows או אמולטור מקוון של MAC OS

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

תָכְנִית:

שֵׁם


sdcc - Small Device C Compiler

תַקצִיר


sdcc [אפשרויות] שם הקובץ

אזהרה


המידע בדף אדם זה הוא תמצית מהתיעוד המלא של SDCC, והוא
מוגבל למשמעות האפשרויות.

לתיעוד מלא ועדכני, עיין ב- SDCC מהדר משתמש להדריך.

תיאור


SDCC הוא קוד פתוח בחינם, ניתן למיקוד מחדש, אופטימיזציה של מהדר ANSI-C המיועד ל-8 סיביות
מיקרו-מעבדים. הגרסה הנוכחית מכוונת למיקרו-מעבדים מבוססי Intel MCS51 (8031,
8032, 8051, 8052 וכו'), גרסאות דאלאס DS80C390, Freescale (לשעבר מוטורולה) HC08 ו
MCUs מבוססי Zilog Z80 (z80, z180, gbz80, Rabbit 2000/3000). זה יכול להיות מיקוד מחדש עבור אחרים
מיקרו-מעבדים, תמיכה עבור Microchip PIC נמצאת בפיתוח.

SDCC משתמש בגרסה שונה של ASXXXX ו-ASLINK, אסמבלר ניתן למטרה בחינם בקוד פתוח &
מקשר.

SDCC יש הרחבות שפה נרחבות המתאימות לשימוש במיקרו-בקרים שונים ו
החומרה הבסיסית ביעילות.

SDCC שימושים ASCXXX & ASLINK, תוכנה חופשית, אסמבלר וניתן למיקוד מחדש. SDCC יש ל
הרחבות שפה נרחבות המתאימות לשימוש במיקרו-בקרים שונים ו
החומרה הבסיסית ביעילות.

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

מעבד בחירת אפשרויות


-mmcs51
צור קוד עבור משפחת המעבדים MCS51 (8051). זוהי ברירת המחדל
יעד מעבד.

-mds390
צור קוד עבור מעבד DS80C390.

-mds400
צור קוד עבור מעבד DS80C400.

-mz80 צור קוד עבור משפחת המעבדים Z80.

-mhc08 צור קוד עבור מעבד GameBoy Z80.

-mz80 צור קוד עבור משפחת המעבדים Zilog Z80.

-mz180 צור קוד עבור משפחת המעבדים Zilog Z180.

-mr2k צור קוד עבור משפחת המעבדים Rabbit 2000 / Rabbit 3000."

-mr3ka צור קוד עבור משפחת המעבדים Rabbit 2000 / Rabbit 3000. בדוק XXXXXX"

-mgbz80
צור קוד עבור מעבד GameBoy Z80 (לא מתוחזק באופן פעיל).

-mpic14
צור קוד עבור מעבדי Microchip PIC 14 סיביות (p16f84 וגרסאות. ב
פיתוח, לא הושלם).

-mpic16
צור קוד עבור מעבדי Microchip PIC 16 סיביות (p18f452 וגרסאות. ב
פיתוח, לא הושלם).

-mtlcs900h
צור קוד עבור מעבד Toshiba TLCS-900H (לא מתוחזק, לא מלא).

-mxa51 צור קוד עבור מעבד Phillips XA51 (לא מתוחזק, לא מלא).

-mstm8 צור קוד עבור מעבד STM8.

מעבד מקדים אפשרויות


-I
המיקום הנוסף שבו המעבד המקדים יחפש את `<..h>' או `..h'
קבצים.

-D
הגדרת שורת הפקודה של פקודות מאקרו. הועבר למעבד המקדים.

-M אמור למעבד הקדם להפיק כלל מתאים לתיאור ה-
תלות של כל קובץ אובייקט. עבור כל קובץ מקור, המעבד המקדים מוציא פלטים
עשה-כלל אחד שהיעד שלו הוא שם קובץ האובייקט של אותו קובץ מקור ושל מי
תלויות הן כל הקבצים '#include' שבו. כלל זה עשוי להיות שורה בודדת או
ניתן להמשיך עם `\'-שורה חדשה אם היא ארוכה. רשימת הכללים מודפסת על
פלט סטנדרטי במקום תוכנית C המעובדת מראש. `-M' מרמז `-ה'.

-C אמור למעבד הקדם לא לזרוק הערות. בשימוש עם ה `-ה' אוֹפְּצִיָה.

-ממ כמו `-M' אבל הפלט מזכיר רק את קובצי הכותרת של המשתמש הכלולים בהם
`#include "קובץ"'. קבצי כותרות מערכת הכלולים עם `#include 'מושמטים.

-A שאלה תשובה)
טען את התשובה לשאלה, למקרה שהיא נבדקה עם מעבד קדם
מותנה כגון `#if #question(answer)'. `-א-' משבית את התקן
קביעות שמתארות בדרך כלל את מכונת המטרה.

-A שאלה
(תשובה) טען את התשובה לשאלה, למקרה שהיא נבדקת עם א
preprocessor מותנה כגון `#if #question(answer)'. `-א-' מבטל את
קביעות סטנדרטיות שמתארות בדרך כלל את מכונת היעד.

-אומאקרו
חוסר הגדרה של מאקרו. `-U' האפשרויות נבדקות אחרי הכל `-D' אפשרויות, אבל
לפני כל `-כלול' ו `-imacros' אפשרויות.

-dM אמור למעבד הקדם להפיק רק רשימה של הגדרות המאקרו שנמצאות בתוכן
השפעה בסוף העיבוד המקדים. בשימוש עם ה '-E' אוֹפְּצִיָה.

-dD אמור למעבד הקדם להעביר את כל הגדרות המאקרו לתוך הפלט, בהגדרות שלהם
רצף תקין בשאר הפלט.

-dN כמו `-dD'אלא שהארגומנטים והתכנים של המאקרו מושמטים. רק `#define
name' כלול בפלט.

קישור אפשרויות


-ל, -lib-נתיב<אבסולוטי נתיב ל נוסף ספריות>
אפשרות זו מועברת לנתיב החיפוש של ספריות נוספות של עורך הקישור. ה
שם הנתיב חייב להיות מוחלט. ייתכן שקובצי ספרייה נוספים יצוינו ב-
שורת הפקודה. ראה סעיף הידור תוכניות לפרטים נוספים.

--xram-loc
מיקום ההתחלה של ה-RAM החיצוני, ערך ברירת המחדל הוא 0. הערך שהוזן יכול
להיות בפורמט הקסדצימלי או עשרוני, למשל: --xram-loc 0x8000 or --xram-loc 32768.

--קוד-לוק
מיקום ההתחלה של קטע הקוד, ערך ברירת מחדל 0. שימו לב מתי אפשרות זו היא
בשימוש גם טבלת וקטור הפסיקות מועברת לכתובת הנתונה. הערך
המוזן יכול להיות בפורמט הקסדצימלי או עשרוני, למשל: --קוד-לוק 0x8000 or --קוד-
loc 32768.

--stack-loc
הערך ההתחלתי של מצביע המחסנית. ערך ברירת המחדל של מצביע המחסנית הוא
0x07 אם נעשה שימוש רק בבנק רישום 0, אם משתמשים בבנקי רישום אחרים, אזי
מצביע מחסנית מאוחל למיקום מעל בנק הרישום הגבוה ביותר שבו נעשה שימוש.
לְמָשָׁל. אם נעשה שימוש בבנקי רישום 1 ו-2, מצביע המחסנית יקבל מיקום כברירת מחדל
0x18. הערך שהוזן יכול להיות בפורמט הקסדצימלי או עשרוני, למשל. --stack-loc
0x20 or --stack-loc 32. אם נעשה שימוש בכל ארבעת בנקי הרישום, הערימה תהיה
ממוקם אחרי קטע הנתונים (שווה ערך ל --stack-after-data)

--stack-after-data
אפשרות זו תגרום למחסנית להיות ממוקמת בראם הפנימי לאחר הנתונים
מגזר.

--data-loc
מיקום ההתחלה של מקטע נתוני ה-RAM הפנימי, ערך ברירת המחדל הוא 0x30. ה
הערך שהוזן יכול להיות בפורמט הקסדצימלי או עשרוני, למשל. --data-loc 0x20 or
--data-loc 32.

--idata-loc
מיקום ההתחלה של ה-RAM הפנימי שניתן להתייחס אליו בעקיפין, ערך ברירת המחדל הוא
0x80. הערך שהוזן יכול להיות בפורמט הקסדצימלי או עשרוני, למשל. --idata-loc
0x88 or --idata-loc 136.

--out-fmt-ihx
פלט הקישור (קוד האובייקט הסופי) הוא בפורמט Intel Hex. (זו ברירת המחדל
אוֹפְּצִיָה).

--out-fmt-s19
פלט המקשר (קוד האובייקט הסופי) הוא בפורמט Motorola S19.

MCS51 אפשרויות


--דגם גדול
צור קוד עבור תוכניות דגמים גדולים ראה סעיף דגמי זיכרון לפרטים נוספים.
אם נעשה שימוש באפשרות זו, כל קבצי המקור בפרוייקט צריכים להיות מורכבים עם זה
אוֹפְּצִיָה. בנוסף, שגרות הספרייה הסטנדרטיות מורכבות עם מודל קטן,
יהיה צורך להידור מחדש.

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

DS390 / DS400 אפשרויות


--model-flat24
צור קוד מצב שטוח של 24 סיביות. זה הקוד האחד והיחיד של ds390
מחולל תומך כרגע והוא ברירת מחדל בעת השימוש -mds390.

--protect-sp-update
השבת את ההפרעות במהלך עדכוני ESP:SP.

_--מחסנית-10 סיביות
צור קוד עבור מצב מחסנית 10 סיביות של החלק של Dallas DS80C390. זה
אחד ויחיד שמחולל הקוד ds390 תומך בו כרגע והוא ברירת מחדל מתי
באמצעות -mds390. במצב זה, הערימה ממוקמת ב-1K התחתון של הפנימי
RAM, אשר ממופה ל 0x400000 . שימו לב שהתמיכה אינה שלמה, מכיוון שהיא
עדיין משתמש בבייט בודד כמצביע המחסנית. זה אומר שרק ה-256 התחתונים
בפועל נעשה שימוש בתים של שטח המחסנית הפוטנציאלי של 1K. עם זאת, זה כן
לאפשר לך להחזיר את 256 הבתים היקרים של זיכרון RAM נמוך לשימוש עבור DATA ו
מקטעי IDATA. המהדר לא יפיק שום קוד להכניס את המעבד אליו
מצב ערימה של 10 סיביות. חשוב לוודא שהמעבד במצב זה
לפני שקוראים לפונקציות נכנסות מחדש כלשהן שהורכבו עם אפשרות זו. בעקרון,
זה אמור לעבוד עם --מחסנית-אוטומטית אוֹפְּצִיָה, אבל זה לא נבדק. זה
לא תואם את --xstack אוֹפְּצִיָה. זה גם הגיוני רק אם המעבד כן
במצב כתובת רציף של 24 סיביות (ראה את --model-flat24 אוֹפְּצִיָה).

Z80 אפשרויות


--callee-saves-bc
כפה על פונקציה שנקראת לשמור תמיד BC.

--no-std-crt0
בעת הקישור, דלג על קובץ האובייקט הסטנדרטי crt0.o. אתה חייב לספק משלך
crt0.o עבור המערכת שלך בעת הקישור.

אופטימיזציות אפשרויות


--nogcse
לא יבצע חיסול ביטויי משנה גלובלי, ניתן להשתמש באפשרות זו כאשר
מהדר יוצר מחסניות/נתונים גדולות באופן בלתי רצוי לאחסון זמני מהדר.
הודעת אזהרה תיווצר כאשר זה יקרה והמהדר יעשה זאת
ציין את מספר הבתים הנוספים שהוקצתה. המליץ ​​על אפשרות זו
אסור להשתמש, #פרגמה NOGCSE ניתן להשתמש כדי לכבות תת-ביטוי גלובלי
חיסול עבור פונקציה נתונה בלבד.

--לא משתנים
לא יבצע אופטימיזציות בלתי משתנה של לולאה, ייתכן שהדבר כבוי מסיבות
הוסבר לגבי האפשרות הקודמת. לפרטים נוספים על אופטימיזציות לולאות שבוצעו
ראה סעיף Loop Invariants. מומלץ שלא להשתמש באפשרות זו, #פרגמה
NOINvariant יכול לשמש לביטול אופטימיזציות בלתי משתנה עבור פונקציה נתונה
בלבד.

--לא אינדוקציה
לא יבצע אופטימיזציות של אינדוקציה בלולאה, ראה הפחתת חוזק בסעיף למידע נוסף
פרטים. מומלץ לא להשתמש באפשרות זו, #פרגמה NO-INDUCTION יכול להיות
משמש לביטול אופטימיזציות אינדוקציה עבור פונקציה נתונה בלבד.

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

--noloopreverse
לא יעשה אופטימיזציה של היפוך לולאה.

אחר אפשרויות


-ג, --הידור בלבד
יקמפל וירכיב את המקור, אך לא יקרא לעורך הקישור.

-E הפעל רק את מעבד הקדם C. עבד מראש את כל קבצי המקור C שצוינו והפלט
התוצאות לפלט סטנדרטי.

--מחסנית-אוטומטית
כל הפונקציות בקובץ המקור יורכבו כ-reenrant, כלומר הפרמטרים
ומשתנים מקומיים יוקצו על המחסנית. אם אפשרות זו משמשת הכל
יש להרכיב קובצי מקור בפרויקט עם אפשרות זו.

--xstack
משתמש בערימת פסאודו ב-256 הבתים הראשונים בראם החיצוני להקצאה
משתנים ופרמטרים מעבר.

--callee-שומר function1[,function2][,function3]....
כברירת מחדל, המהדר משתמש בקונבנצית שמירת המתקשר לשמירת רישום
קריאות פונקציה, אולם הדבר עלול לגרום לדחיפה מיותרת של רישום ולקפוץ כאשר
קריאה לפונקציות קטנות מפונקציות גדולות יותר. ניתן להשתמש באפשרות זו כדי לעבור
מוסכמות שמירת האוגר עבור שמות הפונקציות שצוינו. המהדר יעשה זאת
לא לשמור אוגרים בעת קריאה לפונקציות אלו, לא ייווצר קוד נוסף ב
הכניסה והיציאה של פונקציות אלה כדי לשמור ולשחזר את האוגרים המשמשים אותם
פונקציות, זה יכול באופן מהותי צמצם את הקוד ושפר את ביצועי זמן הריצה של
קוד שנוצר. בעתיד המהדר (עם ניתוח בין-פרוצדורלי) יהיה
מסוגל לקבוע את הסכימה המתאימה לשימוש עבור כל קריאת פונקציה. DO לא להשתמש
אפשרות זו עבור פונקציות מובנות כגון _muluint..., אם אפשרות זו משמשת עבור
פונקציית ספרייה יש להדר מחדש את פונקציית הספרייה המתאימה עם ה
אותה אפשרות. אם הפרויקט מורכב ממספר קובצי מקור אז כל המקור
הקובץ צריך להיות קומפילד עם אותו הדבר --callee-שומר מחרוזת אפשרויות.

--לנפות
כאשר נעשה שימוש באפשרות זו, המהדר יפיק מידע על ניפוי באגים, זה יכול להיות
משמש עם SDCDB. המידע על ניפוי הבאגים נאסף בקובץ עם ‎.cdb
סיומת.

-- regextend
אפשרות זו מיושנת ואינה נתמכת עוד.

--noregparms
אפשרות זו מיושנת ואינה נתמכת עוד.

--ציץ-קובץ
ניתן להשתמש באפשרות זו כדי להשתמש בכללים נוספים שישמשו את חור ההצצה
מייעל.

-S עצור לאחר שלב ההידור עצמו; לא להרכיב. הפלט הוא an
קובץ קוד assembler עבור קובץ הקלט שצוין.

-ווא_asmOption[,asmOption]...]
העבירו את asmOption להרכב.

-Wl_linkOption[,linkOption]...]
העבירו את ה-linkOption למקשר.

--int-long-reent
ספריות שלמים (16 סיביות) וספריות ארוכות (32 סיביות) חוברו כ-reenrant. הערה
כברירת מחדל, ספריות אלו מורכבות כבלתי חוזרות.

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

--float-reent
ספריית הנקודה הצפה מורכבת כ-Reenrant.

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

--החזרה ראשית
ניתן להשתמש באפשרות זו כאשר הקוד שנוצר נקרא על ידי תוכנית מוניטור.
המהדר יפיק 'ret' עם החזרה מהפונקציה 'ראשית'. ה
אפשרות ברירת המחדל היא לנעול, כלומר ליצור 'ljmp'.

--לא-ציץ
השבת אופטימיזציה של חורי הצצה.

--ציץ-אסם
העבר את קוד ההרכבה המוטבע דרך כלי האופטימיזציה של חורי הצצה. זה יכול לגרום
שינויים בלתי צפויים בקוד האסמבלר המוטבע, נא לעבור דרך חור ההצצה
כללי אופטימיזציה המוגדרים בעץ קבצי המקור ' /peeph.def' לפני השימוש
אפשרות זו.

---iram-size
גורם לקישור לבדוק אם השימוש ב-RAM הבין הוא בגבולות הנתון
ערך.

--nostdincl
זה ימנע מהמהדר להעביר את ברירת המחדל של הנתיב כולל ל-
מעבד קדם.

--nostdlib
זה ימנע מהמהדר להעביר את נתיב ברירת המחדל של הספרייה ל-
מקשר.

--מִלוּלִי
מציג את הפעולות השונות שהמהדר מבצע.

-V מציג את הפקודות בפועל שהמהדר מבצע.

ביניים מזבלה אפשרויות


האפשרויות הבאות ניתנות למטרת מיקוד מחדש וניפוי באגים של
מַהְדֵר. אלה סיפקו אמצעי לזרוק את קוד הביניים (iCode) שנוצר על ידי
מהדר בצורה קריא אנושית בשלבים שונים של תהליך הקומפילציה.

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

--dumpgcse
יצור dump של iCode, לאחר חיסול תת-ביטוי גלובלי, לקובץ
בשם .dumpgcse.

--dumpdeadcode
יצור dump של iCode, לאחר חיסול deadcode, לתוך קובץ בשם
.dumpdeadcode.

--dumploop
תיצור dump של iCode, לאחר אופטימיזציות לולאות, לקובץ בשם
שם קובץ>.dumploop.

--dumprange
תיצור dump של iCode, לאחר ניתוח טווח חי, לקובץ בשם
שם קובץ>.dumprange.

--dumlrange
יזרוק את טווחי החיים של כל הסמלים.

--dumpregassign
יצור dump של iCode, לאחר הקצאת רישום, לקובץ בשם
שם קובץ>.dumprassgn.

--dumplrange
תיצור dump של טווחי החיים של iTemp

--דמפל
יגרום ליצירת כל ה-dumps שהוזכרו לעיל.

העתקה


כל קוד המקור של המהדר מופץ תחת הרישיון הציבורי הכללי של GNU.

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


Ad




×
פרסומת
❤️קנו, הזמינו או קנו כאן - ללא עלות, עוזר לשמור על שירותים בחינם.