Menu
Coddy logo textTech

Assembly Online

לכתוב, להריץ ולשתף קטעי קוד - בלי שום התקנה.

Coddymain.asm
Output
Click Run to see the output here.

הריצו Assembly אונליין בדפדפן

זהו קומפיילר Assembly אונליין וחינמי לקוד x86-64 בתחביר NASM. הקלידו את התוכנית, לחצו על הרצה, ו-Coddy מרכיב אותה עם nasm -f elf64, מקשר אותה עם ld ומריץ את קובץ ההפעלה של Linux בצד השרת. לאחר מכן מוצגים stdout, stderr וקוד היציאה. אין מה להתקין: בלי NASM, בלי linker, בלי מכונה וירטואלית ובלי cross-compiler.

תוכנית ההתחלה היא נקודת כניסה _start מלאה שקוראת שורה מהקלט הסטנדרטי וכותבת בחזרה ברכה באמצעות קריאות המערכת הגולמיות read, write ו-exit, בלי libc. ככה Assembly עובד באמת: מעבירים ארגומנטים ל-rax/rdi/rsi/rdx, מפעילים syscall והקרנל עושה את השאר. השתמשו בחלונית ה-stdin שמתחת לעורך כדי להזין קלט לתוכנית בכל הרצה, בדיוק כמו העברת קלט ב-pipe לקובץ בינארי אמיתי.

מה הופך את עורך ה-Assembly האונליין הזה לשימושי

  • toolchain אמיתי של x86-64 NASM. קוד המקור מורכב עם nasm -f elf64 ומקושר עם ld על Linux, אותן פקודות שהייתם מקלידים במחשב שלכם, כך שמה שרץ כאן זהה למה שרץ על מכונה אמיתית.
  • קריאות מערכת ישירות של Linux. תוכנית ההתחלה משתמשת ב-read, write ו-exit דרך הפקודה syscall בלי libc באמצע, כך שרואים בדיוק איך האוגרים נושאים ארגומנטים וערכי החזרה.
  • תמיכה בקלט סטנדרטי. הזינו בתים לתוכנית דרך חלונית ה-stdin וקראו אותם עם syscall 0. שימושי לתרגילים הקלאסיים של 'קראו שם, הדפיסו ברכה' ומעבר להם.
  • אפס הגדרות, משוב מיידי. בלי התקנת NASM, בלי דגלי linker לזכור ובלי שגיאות הרשאה: פותחים את הדף והעורך מוכן. שגיאות מה-assembler ומה-linker מוצגות ישירות בפלט.

מה אפשר לנסות בעורך ה-Assembly האונליין

  • הדפיסו מחרוזת קבועה עם קריאת write אחת ואז exit(0) נקי. זו התוכנית השלמה הקטנה ביותר ב-x86-64, והדרך המהירה ביותר לראות איך _start ו-syscall משתלבים.
  • קראו מ-stdin לתוך buffer ב-.bss, הסירו את תו השורה החדשה שבסוף והדפיסו אותו בחזרה. זו התבנית שמאחורי כמעט כל תרגיל Assembly שמבוסס על קלט.
  • חברו שני מספרים באוגרים והמירו את התוצאה לספרות ASCII באופן ידני, כדי שתוכלו להדפיס אותה עם write. כך לומדים של-Assembly אין print, יש רק בתים וקריאות מערכת.

שאלות נפוצות על קומפיילר Assembly אונליין

באיזה assembler ובאיזה תחביר העורך משתמש?
הוא משתמש ב-NASM (Netwide Assembler) בתחביר Intel, עבור x86-64 Linux. הקוד מורכב עם nasm -f elf64 ומקושר עם ld. אם אתם מגיעים מתחביר AT&T/GAS (בסגנון %rax, movq), כתבו מחדש בסגנון Intel של NASM: mov rax, 1, section .text, global _start.
האם צריך להתקין NASM או linker כדי להשתמש בזה?
לא. כל ה-toolchain רץ בצד השרת בקונטיינר מבודד. כותבים NASM בדפדפן, לוחצים על הרצה, ו-Coddy מרכיב ומקשר את התוכנית בשבילכם. אין מה להתקין מקומית: בלי NASM, בלי ld ובלי מכונה וירטואלית של Linux.
איך קוראים קלט ב-Assembly כאן?
השתמשו בקריאת המערכת read (מספר 0): שימו 0 ב-rax (sys_read), 0 ב-rdi (stdin), את כתובת ה-buffer ב-rsi ואת מספר הבתים המקסימלי ב-rdx, ואז הריצו syscall. כל מה שתקלידו בחלונית ה-stdin שמתחת לעורך יועבר לתוכנית בזמן ההרצה. תוכנית ההתחלה מציגה את התבנית המלאה, כולל הסרת תו השורה החדשה שבסוף.
למה התוכנית שלי צריכה _start ולא main?
כי תוכנית ההתחלה מקושרת עם ld בלי סביבת ריצה של C. main היא מוסכמה של libc: קוד האתחול של C קורא לה אחרי שהוא מכין את הסביבה. בקישור נקי עם ld אין libc, ולכן הקרנל קופץ ישירות לתווית _start, וזו הסיבה שכל תוכנית כאן מגדירה global _start. באחריותכם לצאת בצורה נקייה עם קריאת המערכת exit (מספר 60) בסוף.
אפשר ללמוד Assembly עם הקומפיילר הזה גם כמתחילים?
כן. התחילו מתוכנית הברכה, שנו את המחרוזת וצפו בפלט. אחר כך נסו לקרוא קלט, לבצע חישובים באוגרים ולהמיר מספרים לטקסט באופן ידני. מכיוון שאין הגדרות וכל הרצה נותנת משוב מיידי, אפשר להתקדם מהר, וזו הדרך המהירה ביותר לפתח אינטואיציה לאוגרים, לזיכרון ולקריאות מערכת.

כלים שימושיים ל-Assembly

כלים חינמיים בדפדפן שמשתלבים היטב עם עורך ה-Assembly אונליין - כולם חלק מ-Coddy.