[-] start_co and schedular
by elielia - Wednesday, 8 June 2016 18:44:36
Hi,
main is calling schedular, which is calling do_resume for it's stack structure, which resumes the function "schedular" (which was initialized to be the function for the schedular) ==> kind of an infinite loop.
Based on your instruction which said that the schedular will be replaced, I can't think about a solution for this issue.Both files (schedular.s and coroutines.s) are so dependant on each other. 
What can we do to solve this issue? 

thanks
[-] Re: start_co and schedular
by sadetsky - Thursday, 9 June 2016 01:46:11
there is definitely no infinite loop in the assignment when start scheduler
examine once again the assignment workflow 
[-] Re: start_co and schedular
by elielia - Thursday, 9 June 2016 10:55:23
Hi again,
I got the fact I need to push the arguments to the scheduler stack while initialisation.
But, we have no clue how are you expecting the stack to look after initialisation! What is the order of the things? are the flags included? where does the ESP of schedular need to point to? 
You say "C calling convention" which defines the order of the arguments pushed (and maybe the fact that the first argument needs to be in EBP+8?).
I just want to understand the whole picture of the post-initialisation phase.

Thanks

[-] Re: start_co and schedular
by sadetsky - Friday, 10 June 2016 23:34:20
look at practical session 7
there are illustrations of what is expected to be in the stack after initialization
[-] Re: start_co and schedular
by elielia - Saturday, 11 June 2016 22:19:20
היי, אעבור לעברית.
שוב, עברתי על תרגול 7 כמה וכמה פעמים. אני מבין שצריך לדחוף כתובת לחזרה, פלאגים, ורגיסטרים, ובנוסף, בתוכנית הספציפית שלנו, גם משתנים. 
השאלה שלי היא, ואני באמת אשמח לקבל עלייה תשובה כי אני תקוע עליה כבר 3 ימים ללא מענה:
לפי מה שרשום, הסקדולר שלכם מצפה לקבל את הפרמטרים שלו מהמחסנית. כדי שזה באמת יעבוד, אני צריך לדעת באיזה מקום במחסנית לדחוף את המשתנים ובאיזה סדר, כדי שהסקדולר שלכם ימשוך אותם כמו שצריך. 
אם אני לא בכיוון, בבקשה, אשמח לשמוע
אחרת, באמת, אין שום סיבה שלא אקבל תשובה קונקרטית ואמשיך לעשות את העבודה במקום להתעסק במעטפת

תודה שוב

[-] Re: start_co and schedular
by sadetsky - Sunday, 12 June 2016 22:32:14
מי שמושך סביבת עבודה ממחסנית זה לא המתזמן, אלא פונקציית 
resume
לכן מבחינת המתזמן לא חשוב איך סביבת עבודה שלו נשמרת במחסנית שלו

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

כלומר, אחרי שפטונקציית 
resume
עושה 
ret
לפונקציה של המתזמן, הדבר הבא שיש במחסנית שלו זה הארגומנטים שהוא ימשוך בתחילת הפונקצייה
[-] Re: start_co and schedular
by elielia - Monday, 13 June 2016 00:27:05
תודה רבה!
[-] Re: start_co and schedular
by shimony - Monday, 13 June 2016 13:36:46
To clarify this 100%:

It should appear to the scheduler AS IF it had the following signature:
    void scheduler(unsigned int num_generations, unsigned int k);
where unsigned int is 4 bytes as usual.

There, now it is fully defined (although that is what it said in the assignment text, there MIGHT have been UNLIKELY other possible interpretations).
[-] Re: start_co and schedular
by elielia - Monday, 13 June 2016 14:42:24
תודה רבה, יותר ברור עכשיו.
עוד דבר אחרון, פונקציית
resume
אמורה לעשות 
push
לרגיסטרים וכו' של הרוטינה האחרונה שהייתה בפעולה, לכן נראה לי הגיוני להתחיל את המתזמן דווקא מהפונקציה 
do_resume

האם זה מה שצריך לעשות או שהפונקציה 
resume
 צריכה לקבל את הפרמטרים של הרוטינה הבאה שאותה היא ממשיכה, ולדחוף אותם למחסנית של הרוטינה הבאה?

תודה שוב
Re: start_co and schedular
by sadetsky - Wednesday, 15 June 2016 12:05:31
המתזמן אכן מתחיל מ
do_resume
תראה בשקפים, ככה זה מופיע