DL!

עמוד

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

מוצגות 15 תגובות – 16 עד 30 (מתוך 73 סה״כ)
  • מאת
    תגובות
  • DL!
    משתתף

    היי ניר,

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

    בהצלחה!

    בתגובה ל: בהווווללל!!! צריך עזרה דחוף בנוגע לקוד מסויים #78391
    DL!
    משתתף

    Examples:
    call far ptr 1008:3187 ; 9A 87 31 08 10
    call far [bx] ; FF 1F

    Usage:
    CALL FAR expects a single operand ("argument"), which can be either a direct address (1st example) or indirect address (2nd example).

    Then, it takes the following actions:
    1. push the value of CS to the stack
    2. push the value of IP to the stack (IP already points to the *next* opcode, that is – the one after the CALL FAR opcode)
    3. set the values of CS and IP to the given address


    In general, if you can't find documentation for some opcode – you can try going through the engine's source code. That way you can see for yourself exactly what the opcode does.

    בתגובה ל: עזרה בקשר לשורד #78392
    DL!
    משתתף

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

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

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

    בתגובה ל: Zombie #78395
    DL!
    משתתף

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

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

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

    בתגובה ל: השורדים מהתחרות זמינים להורדה #78430
    DL!
    משתתף

    קוד המקור של מנוע המשחק אכן זמין להורדה, בכתובת:
    http://sourceforge.net/projects/corewars8086

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

    (*) debug, gdb, …

    בתגובה ל: גירסה חדשה של מנוע המשחק #78433
    DL!
    משתתף

    באופן עקרוני אין התחייבות מי מבין שני השורדים (באותה קבוצה) ירוץ קודם.

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

    1. קריאת החלק הרלוונטי בקוד המקור של מנוע המשחק.
    2. הרצת ניסוי.
    בתגובה ל: גירסה חדשה של מנוע המשחק #78437
    DL!
    משתתף

    Sorry, I don't know any good reference for 8086 assembly.

    As for the other question, the engine implements all 8086 opcodes, except the following:

    1. segment prefix (CS:, DS:, ES:, SS:)
    2. DAA, DAS, AAA, AAS, AAM, AAD
    3. IMUL, IDIV

    Also, the auxiliary flag is never updated.

    בתגובה ל: ריצה בסגמנט אחר #78479
    DL!
    משתתף

    The engine doesn't support segment prefixes, so the "ES:" part (which is not the default for "JMP FAR [DI]") is treated as invalid opcode.

    Even if you managed to jump to ES:DI using supported opcodes (e.g "PUSH ES", "PUSH DI", "RETF"), you'd still have a problem, as the engine only allows you to run code from the Arena segment. Otherwise, your survivor would simply jump to its private memory / stack, where it can't be touched by the other survivors – making it invulnerable to attacks.

    In fact, the engine doesn't look at your CS regsiter, but at the actual "linear" address your code is running from – this means you can change your CS segment to whatever you want, as long as your CS:IP still point the Arena memory (I believe the 2006 winning survivor actually used this feature). For example, say the Arena starts at 1000:0000 and ends in 1000:FFFF — changing CS:IP to 1001:0000 would be legal, but changing it to 1001:FFFF wouldn't be).

    בתגובה ל: מתי הזוכים בתחרות יקבלו את הכסף שמגיע להם? #78504
    DL!
    משתתף

    שאלות ספציפיות כאלה, עדיף שתפנה ל-
    support.codeguru@gmail.com

    בתגובה ל: תמונות ראשונות מהתחרות #78507
    DL!
    משתתף

    טוב, עכשיו כל התמונות שם.

    בתגובה ל: כמה מילים על התחרות #78518
    DL!
    משתתף

    תודה, כיף לקרוא שנהניתם!

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

    בכל מקרה, אני אעלה את השורדים שהשתתפו בתחרות ל
    SourceForge
    (כמו בשנה שעברה)

    בתגובה ל: שאלה לגבי התחרות הבאה: #78522
    DL!
    משתתף

    קודגורו אקסטרים היא תחרות שנתית, ואם לא יהיו הפתעות מיוחדות – התחרות הבאה תערך בתחילת 2007.

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

    בתגובה ל: הצילו!2 #78545
    DL!
    משתתף

    And another thing to consider:

    Notice the difference between

    1. JMP BX
    2. JMP [BX]

    Your code does the second, but I think you mean the first.

    בתגובה ל: הצילו!2 #78546
    DL!
    משתתף

    The reason is Endianness issues.

    The code would probably work fine if you change the second opcode to:
    mov word ptr [bx], 0a5f3h   ; rep stosw

    For full details see http://en.wikipedia.org/wiki/Endianness

    בתגובה ל: הצעות לזומבים #78549
    DL!
    משתתף

    אחלה רעיון לשורד.

מוצגות 15 תגובות – 16 עד 30 (מתוך 73 סה״כ)