kirill578

עמוד

התגובות שלי בפורום

מוצגות 9 תגובות – 1 עד 9 (מתוך 9 סה״כ)
  • מאת
    תגובות
  • בתגובה ל: INT 3 #77873
    kirill578
    משתתף

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

    kirill578
    משתתף

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

    בתגובה ל: Phobia קוד מקור #77875
    kirill578
    משתתף

    איפה רואים בקוד שהזומבים רצים אחרי השורדים?
    הייתי שמח לקבל את השורה המדויקת כמו שרשמת למעלה


    הזומבים נטענים אחרי השורדים למערך, סדר הרצת השורדים הוא כסדר המערך
    https://github.com/kirill578/corewars8086/blob/master/corewars8086/src/il/co/codeguru/corewars8086/war/WarriorRepository.java#L109

    ואיזה תו הוא תמיד יהיה הכי ראשון?
    השווה בין מחרוזות בג'ווה מתבצעת ע"י השווה בין ארכי היוניקוד, הערך הכי נמוך של תו ביוניקוד שניתן להדפיס הוא 21 אקסה
    שזה סימן קריאה!

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

    או כמה טילדות כדי להיות לפני מישהו ששם טילדה
    או הרבה טילדות כדי להיות לפני מישהו ששם כמה טילדות

    עדיף לתקן את הבאג ולסגור את הסיפור

    בתגובה ל: Phobia קוד מקור #77883
    kirill578
    משתתף

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

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

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


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

    ולגבי הזומבים של השנה – היו שישה כאלו
    האם כל הזומבים עושים אותו הדבר או שיש להם תפקיד שונה
    —-
    הם עושים כמעט אותו הדבר, כל אחד מהם רושם את השארית בחילוק של הכתובת שלו עם המספר המופיע בכתובת
    0cXdeh
    כאשר איקס הוא המספר של הזומבי
    ואת התוצאה של החילוק ניתן למצוא לאחר מספר דפקי שעון בכתובת
    0cXddh
    כאשר איקס הוא שוב המספר של הזומבי.

    בתגובה ל: Phobia קוד מקור #77892
    kirill578
    משתתף

    אם הזומבים תמיד יהיו אחרונים?
    כן

    איך אתם רצים מייד אחרי הזומבים?
    אנחנו רצים ראשונים בכל סיבוב, והזומבים אחרונים. כך שאף אחד לא רץ בינינו

    איך אתם רצים תמיד ראשונים בכל סיבוב וגם רצים מייד אחרי הזומבים?
    אחרי השורד האחרון רץ הראשון

    איפה בקוד של המנוע יש את קטע הקוד שמאפשר לכם לעשות את זה?
    הנה קטע הקוד שמסדר את השורדים לפני סדר האלף ב', כמובן שטילדה היא לפנות האות a
    https://github.com/kirill578/corewars8086/blob/master/corewars8086/src/il/co/codeguru/corewars8086/war/WarriorRepository.java#L79

    מה סדר הריצה של השורדים והזומבים בתחרות?
    לפי סדר האלפבת, ואז הזומבים

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

    האם כל הזומבים מתקנים אותו הדבר או כל אחד מתקן משהו אחר?
    כל הזומבים חוץ מהזומבי השני מתקנים, הזמבי השני מגן על הזומבים, כאשר הזומבי השני יזה התקרבות לקוד של הזומבים הוא יעתיק את הקוד למקום אחר ויקפיץ את כל הזומבים למקום החדש

    איך עושים דבר כזה? למה זה קורה?
    כאשר מישהו כותב לנו על הקוד, הזומבים שרצים לפנינו יתקנו את הפגם בקוד לפני שאנחנו נריץ אותו

    לא הבנתי בכלל את המשפט הזה – אפשר להסביר למה התכוונתם כאן?
    כאשר המנוע מכין את הזירה הוא מקציב אזורי זיכרון עבור כל השורדים, כאשר כל קטע זיכרון בא לאחר הקטע הקודם. אם תסתכל על הקוד של הזומבים, תראה שהוא לא משמר את הקוד של הסיגמנט המשותף שלהם.
    אבל במידה ומריצים 4 קבוצות שורדים שבכל אחת יש 2 שורדים. אז אזור הפרטי של הזומבים יהיה 2500
    במידה ותנסה להריץ את את השורד ללא עוד 3 קבוצות כל הזומבים ימותו כי הם ינסו לכתובת 2500 שהי הינה הזיכרון הפרטי במיקרה אחר

    גם על איזה קוד מדובר? של איזה שורד או זומבי?
    השאלה לא ברורה

    איך עושים את החישוב של 2500?
    פשוט תריץ את המנוע עם עוד 4 קבוצות ותראה מה הערך של האזור הפרטי של הזומבים (בעזרת הדיבגר)

    בתגובה ל: Phobia קוד מקור #77911
    kirill578
    משתתף

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

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

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

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

    בתגובה ל: פתחתי WIKI שירכז את כל החומר #77914
    kirill578
    משתתף

    כדי לערוך חייבים להירשם, ואני לא מוצא אפשרות להירשם

    בתגובה ל: CMD debugger for windows 7 64bit #77992
    kirill578
    משתתף

    Try to run it with DOSBOX

    בתגובה ל: FSM – על זומבים ומפלצות ספגטי מעופפות #77993
    kirill578
    משתתף

    החלק הזה מאוד מבלבל, תוכל להסביר מה הוא עושה?

    lea di,[si+@end-@loop-0c00h+4h]

    lea sp,[si-800h+4h]

    mov si,0a5f3h ; 0a5f3h = opcode of rep movsw

    push sp ; protection from int 87h

    push si

    push sp

    pop sp

    mov bx,-0c00h

    mov dx,-800h+2h

    mov bp,-400h+4h

    mov ax,0815eh ; ax is a clock

    mov si,4h

    mov cx,200h-2h

מוצגות 9 תגובות – 1 עד 9 (מתוך 9 סה״כ)