<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[מיעון מבוסס היסט]]></title><description><![CDATA[<p dir="rtl">יודע שזה אחד מכמה דרכים אבל, למה?<br />
כאילו למה כל התסבוך של מיעון מבוסס היסט שצריך לומר למעבד<br />
מהRIP לך 200 בתים לכתובת זיכרון כך וכך כאילו, למה?</p>
]]></description><link>https://tchumim.com/topic/17642/מיעון-מבוסס-היסט</link><generator>RSS for Node</generator><lastBuildDate>Mon, 07 Sep 2026 00:16:36 GMT</lastBuildDate><atom:link href="https://tchumim.com/topic/17642.rss" rel="self" type="application/rss+xml"/><pubDate>Sun, 06 Sep 2026 16:19:22 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to מיעון מבוסס היסט on Sun, 06 Sep 2026 20:00:18 GMT]]></title><description><![CDATA[<p dir="rtl">זה לא קשור לנושא זה, <a class="plugin-mentions-user plugin-mentions-a" href="/user/dovid" aria-label="Profile: dovid">@<bdi>dovid</bdi></a> מקפיד על זה<br />
ואגב הקוד הוא חלקי, אפשר רק לנחש שזה חלק מלולאה שממיר מספר למחרוזת, אחרי שהוא כותב תו <code>\n</code> (דהיינו <code>0x10</code>) לסוף <code>bufffer</code> הוא חוזר אחורה לכתוב את הספרה האחרונה של המספר</p>
]]></description><link>https://tchumim.com/post/172100</link><guid isPermaLink="true">https://tchumim.com/post/172100</guid><dc:creator><![CDATA[yossiz]]></dc:creator><pubDate>Sun, 06 Sep 2026 20:00:18 GMT</pubDate></item><item><title><![CDATA[Reply to מיעון מבוסס היסט on Sun, 06 Sep 2026 18:11:51 GMT]]></title><description><![CDATA[<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="/user/yossiz" aria-label="Profile: yossiz">@<bdi>yossiz</bdi></a> אגב , בקוד הזה:</p>
<pre><code>
global main
extern GetStdHandle
extern WriteConsoleA
extern ExitProcess
section .bss
    buffer  resb 8
    written resd 1
section .text
main:
    push    r12
    push    r13
    sub     rsp, 40
    mov     eax, 10000
    lea     rdi, [rel buffer+7]
    mov     byte [rdi], 10
    dec     rdi
</code></pre>
<p dir="rtl">למה מחסרים 1 מRDI?</p>
]]></description><link>https://tchumim.com/post/172098</link><guid isPermaLink="true">https://tchumim.com/post/172098</guid><dc:creator><![CDATA[שאלתיאל]]></dc:creator><pubDate>Sun, 06 Sep 2026 18:11:51 GMT</pubDate></item><item><title><![CDATA[Reply to מיעון מבוסס היסט on Sun, 06 Sep 2026 17:48:08 GMT]]></title><description><![CDATA[<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="/user/yossiz" aria-label="Profile: yossiz">@<bdi>yossiz</bdi></a> הדוגמא הראשונה תפסה לי את העיין תודה! ממש שמח שאפשר להיעזר בך.</p>
]]></description><link>https://tchumim.com/post/172099</link><guid isPermaLink="true">https://tchumim.com/post/172099</guid><dc:creator><![CDATA[שאלתיאל]]></dc:creator><pubDate>Sun, 06 Sep 2026 17:48:08 GMT</pubDate></item><item><title><![CDATA[Reply to מיעון מבוסס היסט on Sun, 06 Sep 2026 17:41:45 GMT]]></title><description><![CDATA[<p dir="rtl">זה לא תחום שאני בקי בו, התשובה הבסיסית היא ככה:<br />
צריך להבחין בין מיעון שהוא יחסי לבסיס כלשהו סתמי לבין מיעון יחסי ל-RIP</p>
<p dir="rtl">מיעון מבוסס היסט סתמי הוא צורך מאוד נפוץ, זה נועד כדי לאפשר גישה קלה לשדה בתוך מבנה נתונים<br />
דוגמה:<br />
נגיד יש לך איזה שירות ענן כלשהו (SaaS בלע"ז), אז יש משתשמים במערכת ולכל משתמש יש קרדיטים שהוא קונה כדי להשתמש במערכת. אז יש לך מבנה נתונים שמייצג לקוח. המבנה הזה הוא עם כמה שדות, יש שדה של שם, גיל, מספר קרדיטים במערכת, ורמת הרשאה.<br />
ואז מסביב אתה כותב פונקציות עזר, למשל פונקציה שיוצרת לקוח חדש מארגומנטים, עוד פונצקיה שמעדכן את רמת ההרשאות ועוד אחד שמעדכן את מספר הקרדיטים במערכת.<br />
אז הפונקציה שמעדכנת את מספר הקרדיטים, היא מקבלת כארגומנט את הכתובת של אובייקט הלקוח, והפונקציה צריכה לגשת להיסט מסויים בתוך המבנה כדי לעדכן את הערך שנמצא שם<br />
מכיון שזה צורך כל כך נפוץ, יצרו פקודות מיוחדות לגשת בצורת בסיס+היסט במקום להשתמש בפקודות הרגילות של חיבור כי ככה יוצא קוד בינארי יותר קטן וגם זה הפקודה יותר יעילה מאשר לעשות בעצמך את הפעולה המתמטית של חישוב הבסיס+ההיסט ולשמור את זה בעוד אוגר ואז לגשת לתוצאה</p>
<p dir="rtl">לגבי מיעון שהוא יחסי ל-RIP, זה סיפור קצת שונה:<br />
הצורך בזה הוא כדי לבנות ספריות נטענות (DLL-ים בווינדוס או shared objects בלינוקס) בצורה שאפשר להטעין אותם לכל מקום בראם בלי לעבור על כל הכתובות ולעדכן אותם (מה שנקרא Position Independent Code או PIC)<br />
הסבר:<br />
בהרבה ספריות יש בנוסף לאוסף של פונקציות, גם צורך לשמור ולגשת לדאטה גלובלי כלשהו, אם הכתובת של המשתנה הגלובלי הזה יהיה קבוע, אי אפשר יהיה לטעון את הספרייה לכל מיקום בזכרון בלי לעדכן כל מקום שניגש למשתנה הגלובלי הזה, לכן המציאו אפשרות לגשת למיקום שהוא יחסי ל-RIP ככה בכל כתובת שתטען את הספרייה הקוד יעבוד<br />
אגב, בלי אפשרות זו, לא היה אפשר לעשות את זה עם פקודות מתמטיות, כי אין גישה ישירה לערך של RIP</p>
]]></description><link>https://tchumim.com/post/172097</link><guid isPermaLink="true">https://tchumim.com/post/172097</guid><dc:creator><![CDATA[yossiz]]></dc:creator><pubDate>Sun, 06 Sep 2026 17:41:45 GMT</pubDate></item></channel></rss>