ABA


"אתגרון תכנותי."
גירסת הדפסה        
קבוצות דיון פיתוח, תיכנות ובניית אתרים נושא #11502 מנהל    סגן המנהל    מפקח   Winner    צל"ש   מומחה  
אשכול מספר 11502
MadXP

   21:31   10.12.04   
אל הפורום  
  אתגרון תכנותי.  
 
   איך אוכל לדעת אם המכונה עליה אני מתכנת עובדת בתצורת
big endian/small endian
?

הסבר : big endian
כאשר הבית החשוב )msb( יושב בבית הראשון והבית הלא חשוב ( lsb (
יושב בבית שלאחר מכן.

יותר קל להסביר זאת באנגלית :

Some machines store, for example, a two-byte integer with the least significant byte first, followed by the most significant byte. These machines are called little endian machines. Other machines store a two-byte integer with its most significant byte first, followed by it least significant byte. These machines are called big endian machines. Most UNIX machines are big endian. Whereas most PCs are little endian machines.


פתרונות בכל שפה אפשריים.


                                שתף        
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד

  האשכול     מחבר     תאריך כתיבה     מספר  
  אני אנסה לעשות באסמבלי bmaorlo  10.12.04 21:51 1
     לכאורה נכון רק שחסר משמעות לממש באסמבלי dryice 11.12.04 13:58 2
         על זה לא חשבתי חחח העיקר מימשתי את זה. bmaorlo  11.12.04 19:20 3
             בדיוק כמו שעשית באסמבלי... Dudenland 11.12.04 20:22 4
                 יפה. MadXP 13.12.04 17:53 5

       
bmaorlo 
חבר מתאריך 13.4.03
4770 הודעות
   21:51   10.12.04   
אל הפורום  
  1. אני אנסה לעשות באסמבלי  
בתגובה להודעה מספר 0
 
   ערכתי לאחרונה בתאריך 10.12.04 בשעה 22:07 בברכה, bmaorlo
 

dseg segment
A1 DW 1234h
dseg ends

mov si,0

cmp byte ptr A1(si),12H
je big_endian
jne little_endian

big_endian: כאן הבית החשוב נמצא בבית הראשון
jmp sof

little_endian: כאן הבית החשוב נמצא בסיבית הגבוהה כמו פיסי ממוצע

sof:


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

מקווה שצדקתי ושלא הסתבכתי עם זה כל כך חח


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
dryice

   13:58   11.12.04   
אל הפורום  
  2. לכאורה נכון רק שחסר משמעות לממש באסמבלי  
בתגובה להודעה מספר 1
 
   שכן אם אתה כותב באסמבלי הרי אתה כבר יודע על איזו מכונה מדובר
ויודע מה הbyte order.

מימוש בשפה עילית כמו למשל C הוא יותר בעל משמעות כי אז יתכן
שנקמפל ונריץ את אותו קוד על מכונות שונות.

DRYICE


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
bmaorlo 
חבר מתאריך 13.4.03
4770 הודעות
   19:20   11.12.04   
אל הפורום  
  3. על זה לא חשבתי חחח העיקר מימשתי את זה.  
בתגובה להודעה מספר 2
 
   בשפת C אין לי מושג איך עושים אז אני אפרוש


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
Dudenland

   20:22   11.12.04   
אל הפורום  
  4. בדיוק כמו שעשית באסמבלי...  
בתגובה להודעה מספר 3
 
   מגדירים משתנה בעל אורך מינימלי כפול, ומגדירים מצביע מסוג טיפוס בעל גודל מינימלי יחיד, אשר יצביע על כתובת תחילתו של המשתנה (בעל האורך הכפול)... את השאר כבר עשית...


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
MadXP

   17:53   13.12.04   
אל הפורום  
  5. יפה.  
בתגובה להודעה מספר 4
 
  


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד

תגובה מהירה  למכתב מספר: 
 
___________________________________________________________________

___________________________________________________________________
למנהלים:  נעל | תייק בארכיון | מחק | העבר לפורום אחר | מחק תגובות | עגן אשכול
       



© כל הזכויות שמורות ל-רוטר.נט בע"מ rotter.net