התגובות שלי בפורום
-
מאתתגובות
-
eyalidoמשתתף
תודה יואב, בדיוק חקרתי את העניין וזה מאוד יקל על כתיבת הסקריפ. במחשבה שניה שימוש בסי פלאס פלאס יהיה לי יותר נוח מכיוון שלא קשה להשתמש שם בsystem כדי פשוט להריץ את הכל דרך הcmd כמו שאני כבר יודע לעשות. גם האפשרות של הadd directory תעזור במיוחד כי כך התשובה שמתקבלת תכיל את התוצאה של השורד שלי ראשונה כל עוד אשים את השאר בתיקיה שאני מצרף.
מכאן כבר אוכל להסתדר בעצמי..
עידו 🙂eyalidoמשתתףתודה עידן 🙂
אגב היה לי עכשיו רעיון אבל מסתבר שכבר חשבו עליו לפני כי חסמו את זה. ראיתי שהסגמנט של הes והss משתנה במספר קבוע בין השורדים לפי הסדר שלהם על הזירה אז חשבתי שאולי אפשר יהיה לנסות ולשבש שורדים אחרים בצורה כזו חחח.eyalidoמשתתףתודה על התשובות.
בכל מקרה כנראה שהשנה לא נגיע לגמר, אבל אני אופטימי לגבי שנה הבאה 🙂
עידוeyalidoמשתתףלגבי הסתכלות על הקוד – זה דרך הדיסאסמבלר של nasm. למרות שכמו שיואב רושם זה מאוד מסובך להסתכל רק על הקוד כי קשה להבין.
כמובן יואב שאני גם מריץ אותם בדיבאגר, אבל נתקלתי גם בקודים של שורדים כמו bam שהפכו את השורד לבלתי ניתן לקריאה גם בדיסאסמבלר וגם בדיבאגר (דרך קפיצה לאמצע פקודה בהתחלה, כך שמריצים קוד שונה ממה שמוצג בדיסאסמבלר, ושינוי cs כך שהמיקום שלהם בזירה בדיבאגר מעצבן למצוא אותו (כי הip שלהם תמיד על אותו מיקום והדיבאגר מראה את המיקום על הזירה רק לפי ip ולא מתייחס לcs כמו שצריך ככה שצריך לעשות את החישובים לבד וזה מאוד מציק..)).
וכן, כמובן שידועה לי שזו הדרך הכי טובה, הבעיה היחידה בשבילי היא שאין לי מספיק זמן לעשות זאת. גיליתי על התחרות הזו קרוב מאוד לתאריך ההרשמה ולכן לא היה לי הרבה זמן להתכונן. בכל מקרה תודה 🙂אגב שאלה, האם התחרות הזו מוגבלת לגיל ביה"ס (עד כיתה י"ב)? כי גיליתי עליה כמו שרשמתי רק השנה, ואני בכיתה יב', ומאוד אשמח להשקיע יותר זמן בהתכוננות לתחרות הבאה אם עדיין אוכל להשתתף בה 🙂 ככה אולי יהיה לי סיכוי לניצחון (משהו שאני לא מצפה לו בתחרות הקרובה מפאת זה שלא הקדשתי מספיק זמן לעניין).
עידו (קבוצת Sir Vivor שהתפרקה, הצטרפתי לקבוצת carrot).
eyalidoמשתתףאגב לגבי הקוד לדוגמא שנתתי כאן, מפני שאני משתמש בmovsb ולא movsw, יכול להיות מאוד פשוט להוסיף עוד שורה שתתקיף (כמו לעשות בהתחלה push cs, pop ss ולהוסיף אחרי זה פקודת push בשביל לתקוף את הזיכרון בכיוון ההפוך). כל מה שתצטרך לעשות אחרי זה (כל עוד הפקודה שאתה מכניס היא אופקוד באורך של ביית ולא יותר מזה) זה להחליף את movsb בmovsw וזה עדיין יעתיק לך את כל הקוד בפקודה אחת..
לעידן, קודם כל קוראים לי עידו, אבל לא נורא 🙂
לגבי מה הראשי תיבות אומרים, זה לא ממש משנה, זה לא מה שיעזור לי לכתוב קוד מנצח חחח.eyalidoמשתתףאני מאמין שיותר חשוב לעבוד על קוד לתחרות, כי לא משנה אם תוכל להשתלט על הזומבים, אם לא יהיה לך קוד בשבילם להריץ זה לא יעזור לך בכלל.
לגבי העתקה של הקוד שלך, הדרך הפשוטה ביותר והבסיסית ביותר להעתיק את הקוד שלך הוא באמצעות הפקודה movsw. הפקודה movsw שפירושה move string word בעצם לוקחת את המילה (שני בתים) במיקום הds:[si] וכותבת אותה אל המיקום es:[di]. חשוב קודם כל אם משתמשים בפקודה להעביר את es כך שיצביע על cs, אז אפשר להשתמש בpush cs ואחר כך pop es. אחרי זה כמובן שצריך לגרום לsi להצביע על תחילת הקוד שתרצה להעתיק. הפקודה גם עושה auto increment לsi ולdi כך שאין צורך לדאוג לכך, ורק צריך לדאוג שהיא תרוץ מספר פעמים שמתאים לאורך הקוד שלך (אם משתמשים בmovsw כמובן צריך לדאוג שאורך הקוד יהיה מספר בתים זוגי..). אני מקווה שהסברתי מספיק ברור, אבל לצורך העניין אני אצרף קוד פשוט שמעתיק את עצמו מיד אחרי הקוד שלו (כך שהip שלנו יתקדם ישירות לקוד החדש ולא יהיה צורך לפקודת jmp). שים לב אגב שפקודת movsb היא אותו דבר רק שהיא מעבירה בית אחד ולא שניים.
before:
push cs
pop es
add ax,start-before
mov si,ax
add ax,endd-start
mov di,ax
start:
movsb
endd:eyalidoמשתתףאוקיי תודה, כנראה שטעיתי. פשוט חשבתי שאני רואה שורות מתמלאות בבת אחת כל כמה זמן אז חשבתי שזו הפצצה כבדה.
תודה 🙂eyalidoמשתתףשלום, אשמח אם תוכלו לפרסם את התאריכים של ההרצות הבאות כדי שאדע מתי לשלוח גרסה משופרת/שונה (כדי לדעת אם היא יותר טובה).
בנוסף, אשמח אם תוכלו לספק מידע האם קבוצה שהשתתפה בהרצה פתרה את הזומבים או שלא, רק כדי שיהיה לי אמת מידה להבדל ברמה של הקוד (למשל, האם z_board קורעים את כולם עם הקוד שלהם, או שאולי הם פשוט היחידים שפתרו את הזומבים עד עכשיו).
תודה מראש,
עידו מקבוצת Sir Vivor. -
מאתתגובות