CodeGuru

עמוד

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

מוצגות 15 תגובות – 46 עד 60 (מתוך 407 סה״כ)
  • מאת
    תגובות
  • בתגובה ל: שאלה לגבי חוקים טכניים #77947
    CodeGuru
    מנהל בפורום

    שלום,

    1. יש כיתת מחשבים; את השורדים שולחים בדוא"ל לפני התחרות והם מורצים על ידי צוות התחרות
    2. בכל סיבוב רצים ארבעה שורדים, עוברים על כל האפשרויות לארבעה מתוך כלל השורדים ומכפיל הסיבובים נקבע כך שזמן הריצה יהיה סביר (ככל שיהיו יותר צוותים הוא יהיה יותר נמוך).
    3. שלב ראשון – השורדים כפי שנשלחו מראש; שלב שני – בבוקר התחרות ואז כולם רואים את השורדים של כולם ויש להם זמן לשנות. שלב שלישי – אחרי התיקונים; שלב רביעי – ארבעת הזוכים בשקלול של שלב א' ושלב ב' עולים לגמר; בגמר הניקוד מתחיל מאפס
    4. אין מגבלות לשינויים, אבל מכיוון שהציון משוקלל, אם תשלח שורד מצ'וקמק בהתחלה, תקבל ציון נמוך
    5. המנצח, כאמור בסוף סעיף 3 – הוא המנצח בגמר (בלי קשר לציונים הקודמים – הם רק הביאו אותו להשתתף בגמר).
    6. מותר להיות יצירתי, אסור לרמות. למשל – לגנוב שורדים של מתחרים לפני פרסומם. אם יש לך ספק – אתה מוזמן להוועץ באופן פרטי ולברר

    בהצלחה!

    בתגובה ל: בעיה בשורד #77950
    CodeGuru
    מנהל בפורום
    בתגובה ל: בעיה בשורד #77952
    CodeGuru
    מנהל בפורום

    אתה מוזמן להשתמש בתוכנה שקיריל כתב
    https://github.com/kirill578/corewars8086
    לדבג את השורד.

    בתגובה ל: בעיה בשורד #77954
    CodeGuru
    מנהל בפורום

    שלום Abit
    אתה צריך לכתוב
    mov word [es:bx],07c6h
    הבעיה היא ב
    Endianity
    ראה
    סדר בתים

    מקווה שעזרתי,
    בהצלחה!

    בתגובה ל: Challenge #77956
    CodeGuru
    מנהל בפורום

    ניחוש טוב, אבל לא בדיוק. אם תקרא את
    RFC-1991
    תראה שלחתימה יש מבנה מיוחד. אפשר לקודד באמצעות מבנה זה גם דברים אחרים…

    בתגובה ל: Challenge #77958
    CodeGuru
    מנהל בפורום

    ytmaj5Wemt2b5FmavBHb6ZlLtZmbmxmcuBnYzpGa6FWcm5ma0d2YxJWa1J3ZjpnbmZ3blhnd6hWV
    ll3dvZGcthnYuRGbx12bmlmcpNXZuNWciV2clRncvhmVmhmWK4ics52Ymhme4tmeyR2b6JHdhFmZ
    4RGa1RXYvxCbr9mZ09Ga5JXal9mbn1GbllGVK4CeyB3bpRmb1ZnY0Rna0l3bjJ3YqR3avl2Zw1WY
    ylWa0hnYuNmcwdHdiF3c112b5d2akJ3cvlmcwNlCuknYkV3ZsR2c2xmc2JmclNXY5JHdvlGZu9WZ
    nNndIpAL5VXa0RXcj5malFnd0pHa19GasYGbr9WallHa3d2b4RlCqJ2d2lXbsVXd6EGal1memhGe
    1ZXZv9me4lGZyNWZtF3YxdWdutmdr1WYu9GeTpALt1WZkNHeodHeh1WZjJnekhGesEGdipHZWNXa
    pRnbnpnbm52b4NlCuYnel12Y0hWYj5mYoJndkh2Y0VWcuV3YvBHbolXc1lGZlhncwZlCsk3bppHa
    udWbqFWdzhnck5Gbldyc5Jmei1iciRXezdXcpJGcHpgZt5mZwdneyFGZoVnZ1Zmdo9Wbsd2ZpVWZ
    sFXamhme1JGa3BHRKkna3FHa1J3apdnc1BXZ6ZHejV2c1pXYtVHZiN3b61mcvl2VKszazF3aypWZ
    =ogLldWa4dWYnIHdvVGeuhXcpZGa6xme0JWa0dmc

    בתגובה ל: Challenge #77960
    CodeGuru
    מנהל בפורום

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

    בתגובה ל: Challenge #77962
    CodeGuru
    מנהל בפורום

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

    בתגובה ל: תאריך לסוף מילוי שאלון #77964
    CodeGuru
    מנהל בפורום

    פורים

    בתגובה ל: A86 התקנת קופיילר #77965
    CodeGuru
    מנהל בפורום

    שלום אבי,
    אני מניח שקראת את
    http://codeguru.co.il/Xtreme/tech2.htm
    אתה צריך להוריד ולהתקין אסמבלי ואז ההרצה המתוארת היא דרך חלון
    DOS

    בתגובה ל: עזרה בלהבין קוד אסמבלי שקומפיילרים יוצרים #77966
    CodeGuru
    מנהל בפורום

    אם נגדיר, למשל, מערך שכל איבר בו מכיל שני מספרים שלמים, מספר ממשי, וביט בוליאני אז הגודל של כל איבר יהיה
    2*sizeof(int)+sizeof(float)+sizeof(boolean) = 2*4+4+1 = 13
    ואז, אם שמים אותם ברציפות בזכרון, הכתובת של האיבר ה
    N
    היא
    Base + 13*N

    ולמה זה מכפיל ב-13? הנה הסבר:
    mov eax, edx   ax = dx
    add eax, eax    ax = ax+ax = 2*dx
    add eax, edx    ax = ax+dx = 3*dx
    shl eax, 2         ax = ax<<2 = 12*dx
    add eax, edx    ax = ax+dx = 13*dx

    בתגובה ל: עזרה בלהבין קוד אסמבלי שקומפיילרים יוצרים #77968
    CodeGuru
    מנהל בפורום

    שני החלקים מחשבים משהו כפונקציה של
    [ebp+var_4]
    החלק הראשון נראה כמו הכפלה ב-13 (שמתאים למבנה נתונים בגודל כזה) והתוצאה ב
    [ebp+var_8]
     והשני מחשב ביט בודד (אפס או מינוס אחת).
    והתוצאה ב
    [ebp+var_c]

    כדאי לראות את קטע הקוד בשפה העילית במקביל.

    CodeGuru
    מנהל בפורום

    ב"רגילים" התכוונתי לשמירה במחסנית של ערך של אוגר כדי שאפשר יהיה להשתמש בו למשהו אחר ואז הוצאה ממנה חזרה של הערך המקורי. למשל דוגמא 7.7 בעמוד 276 בספר של האוניברסיטה הפתוחה
    cse.proj.ac.il/asembli/st-book-pdf.pdf
    חייבים לשמור במקרה שצריך את הערך המקורי אחר כך, אבל קומפילרים שומרים הכל בכל מקרה כי לפעמים קשה לדעת האם הערך ישתנה ואו האם נזדקק לערך הישן בעתיד. לעיתים אופטימיזציה טובה יכולה להשמיט פקודות אלו.
    בדרך כלל יש רק מחסנית אחת (צריך לעשות פעולות מיוחדות כדי לייצר יותר מאחת). הפקודות
    push ebp
    mov ebp, esp
    נועדו לשמור על מצב המחסנית ולשחזר אותה בסוף השגרה על ידי זוג הפקודות
    mov  esp, ebp
    pop  ebp

    RET
    הוא לחזור משגרה. האסמבלי מתרגם אותו ל
    Return Near או Return Far
    בהתאם לסוג השגרה
    Call או Call Far

    CodeGuru
    מנהל בפורום

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

    אני מאוד אוהב את הדף (שני עמודים) המתומצת הזה
    http://www.jegerlehner.ch/intel/IntelCodeTable.pdf
    הוא אמנם לא מכיל את ערכי ההקסה של הפקודות, אותם אפשר למצוא ב
    Debug
    או באתר
    http://www.mlsite.net/8086/
    אותו והרבה אחרים אפשר למצוא בדף הקישורים הזה
    http://cs.haifa.ac.il/courses/com_org_etgar/web/references.html

    לשאלתך
    40 = INC AX
    41 = INC CX
    42 = INC DX
    43 = INC BX
    44 = INC SP
    45 = INC BP
    46 = INC SI
    47 = INC DI
    והשאלה השניה
    C2 = RET N
    C3 = RET

    CodeGuru
    מנהל בפורום

    שלום nopsled (איזה שם נחמד),
    דחיפת המשתנים לפני הקריאה היא לא על מנת לשמור את ערכם, אלא כדרך להעביר פרמטרים לפונקציה.
    ראי, למשל, סעיף 8.2.1.4
    http://courses.engr.illinois.edu/ece390/books/labmanual/c-prog-mixing.html

    עודד

מוצגות 15 תגובות – 46 עד 60 (מתוך 407 סה״כ)