Skip to content

Open university project - assembler written in C language. Grade - 100

Notifications You must be signed in to change notification settings

Elialka/openuAssembler

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

61 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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


קובץ assembler.c
	הקובץ מכיל את התכנית הראשית main, וכן פונקציות עזר אחדות כגון פונקציה לבדיקת סיומת חוקית לשם קובץ, פתיחת קובץ, אתחול מאגרי נתונים ומחיקתם וכו'...
	התכנית מאתחלת מאגר נתונים המכיל שמות של פעולות, ומשחררת את הזכרון שלה רק בסוף ריצת התכנית.
	לכל קובץ בעל שם חוקי, התכנית קוראת לפונקציה compileFIle, שבתורה קוראת לפונקציות לפתוח את הקובץ, מעבר ראשון, מעבר שני וכן הלאה.

קובץ firstPass.c
	הקובץ דואג למעבר הראשון. המעבר הראשון דואג לקודד כל שורה הניתנת לקידוד במעבר זה, ולשלוח הודעות שגיאה להדפסה (אם רלוונטי). המעבר הראשון רושם במאגרי נתונים אחדים (יפורט בהמשך) כל נתון שלא ניתן לקודד בעת הריצה של המעבר הראשון.
	נתונים אלו כוללים אך לא מוגבלים לקריאות entry/extern, שימוש בסמלים כאופרנדים של פעולה והגדרות סמלים חדשות.

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

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

קובץ printErrors.c
	קובץ זה אחראי להדפסת שגיאות למשתמש, מכיל פונקציות המדפיסות שגיאה או אזהרה

קובץ printFiles.c
	קובץ זה מטפל ביצירת קבצי פלט.

קובץ global.h
	מכיל קבועים, מבנים וסוגי enums המשומשים בכל הפרויקט.




קבצים המנהלים מאגרי נתונים

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

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

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

קובץ entryCallsDB.c
	המאגר נועד לשמור כל הצהרה כentry הנתקלת במהלך המעבר הראשון, ובמעבר השני כתובות הרשומות במאגר מתעדכנות לאחר השלמת טבלת הסמלים. הקובץ מכיל פונקציות אחדות לגישה/הוספה/עדכון רשומות.
	כל רשומה שומרת את שם התווית והכתובת בה הוגדרה בקובץ, וכן את השורה ומספר השורה בה הוצהר הentry, לשימוש הדפסת שגיאות במעבר השני במידת הצורך

קובץ externUsesDB.c
	המאגר נועד לשמור כל שימוש בתווית שהוגדרה חיצונית לקובץ המקור הנוכחי. כל רשומה מכילה את שם התווית וכתובת בה היא שומשה. תווית המשומשת מספר פעמים כרשומה נפרדת על כל שימוש בה.

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

קובץ labelsDB.c
	המאגר מממש את טבלת הסמלים כפי שמתוארת בחוברת. כל רשומה מכילה את שם התווית, כתובת ההגדרה שלה, והאם הוגדרה בשורת קוד/נתונים או הוגדרה כחיצונית.

About

Open university project - assembler written in C language. Grade - 100

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published