الشبكة العربية لمطوري الألعاب

خبير  سعيد بسيوني مشاركة 1

أحببت أن أشارك الجميع بهزه المعلومة عن أحجام المتغيرات الشائعة في البرمجة وتسمياتها...
Nibble = 0.5 Byte (4 bits)
Byte = 1 (you know that, don't you?!)
Word = 2 Bytes
Double Word = 4 Bytes
Quad Word = 8 Bytes
Paragraph = 16 Bytes!

خبير  Mohammad Khashashneh مشاركة 2

التعليق على مشاركة سعيد بسيوني في Sep 11, 2005 22:26 :

> أحببت أن أشارك الجميع بهزه المعلومة عن أحجام المتغيرات
> الشائعة في البرمجة وتسمياتها...
> > Nibble = 0.5
> Byte (4 bits)
> Byte = 1 (you know that, don't you?!)
> Word
> = 2 Bytes
> Double Word = 4 Bytes
> Quad Word = 8 Bytes
> Paragraph
> = 16 Bytes!

Doesn`t the size of a Word depend on the machine ? Like a Pentium machine has a word of 32 bits = 4 Bytes. an Athlon64 machine has a word of 64 bits = 8 bytes.

من سار على الدرب وصل, من جد وجد...
بس عتبك على اللي بيسمع

خبير مدير وسام البهنسي مشاركة 3

على حسب علمي، فإن الأنواع WORD و BYTE و DWORD هي معروفة ذات أحجام ثابتة بغض النظر عن الـ platform. يعني أنك عندما تستخدم DWORD فإنه سيكون 4 بايتات مهما كان نوع المترجم/نظام التشغيل.
بالمقابل، المتغيرات int، short، و long كلها غير ذات أحجام محددة. لكنها تضمن لك range معين (على ما أذكر).
بالمناسبة، المتغير char حتى غير محدد في مواصفات الـ ANSI إذا كان signed أو unsigned. في ++VC يعتبر signed...

وسام البهنسي
مبرمج في يونيتي وإنفريمز

خبير  Mohammad Khashashneh مشاركة 4

التعليق على مشاركة وسام البهنسي في Sep 13, 2005 14:18 :

> على حسب علمي، فإن الأنواع WORD و BYTE و DWORD هي معروفة
> ذات أحجام ثابتة بغض النظر عن الـ platform. يعني أنك
> عندما تستخدم DWORD فإنه سيكون 4 بايتات مهما كان نوع
> المترجم/نظام التشغيل.

If you mean the keyword WORD then this is true. But remember that these are not part of the C language. They are Microsoft specific data types and they are kept that way for backward compatibility.
I thought he was talking about general data type sizes.

> بالمقابل، المتغيرات int، short،
> و long كلها غير ذات أحجام محددة. لكنها تضمن لك range
> معين (على ما أذكر).
For example int is 4 bytes in Win32, and 2 bytes in Win16

من سار على الدرب وصل, من جد وجد...
بس عتبك على اللي بيسمع

خبير مدير وسام البهنسي مشاركة 5

التعليق على مشاركة Mohammad Khashashneh في Sep 13, 2005 10:43 :
> > If you
> mean the keyword WORD then this is true. But remember
> that these are not part of the C language. They are
> Microsoft specific data types and they are kept that
> way for backward compatibility.
> I thought he was talking
> about general data type sizes.
>

لم أكن أعني الأسماء المعرفة في windows.h، لكن هذه المصطلحات ابتكرتها Intel وهي ليست جزءاً من الـ ANSI C كما قلت. لكنني أعني أنه عندما تخبر شخصاً في الشارع أنك تريد متغير من حجم WORD فإنه سيعطيك 2 بايت. مهمة المبرمج في كل platform هي تعريف هذه الأنواع في header بما يتوافق مع أحجام المتغيرات في المترجم المستخدم. في حالة ++VC للـ Win32 فإننا نكتب:
typedef unsigned short WORD;

أما في ++VC للـ Win16:
typedef unsigned int WORD;


هذا فهمي للموضوع...

وسام البهنسي
مبرمج في يونيتي وإنفريمز

خبير  Mohammad Khashashneh مشاركة 6

Yes that makes sense since the int in Win16 is 2 bytes , and short in Win32 is also 2 bytes.

But there seems to be a misunderstanding.
A WORD in general is related to the processor architecture. Check out the following link. They also have a link to Wikipedia.
http://foldoc.doc.ic.ac.uk/foldoc/foldoc.cgi?query=WORD&action=Search

Now a word in an assembler language is dependant on the type of CPU you are using. for example an ARM7 processor has WORD data type equals 32-Bits. An Intel Itanium WORD data type is 64-bits! However Intel Pentium and AMD Athlon CPUs Assemblers consider a WORD Dataype to be 16-bit for backward Comp. despite being 32-bit processors.

من سار على الدرب وصل, من جد وجد...
بس عتبك على اللي بيسمع

خبير مدير وسام البهنسي مشاركة 7

جزيل الشكر على الرابط... كانت لدي الفكرة أن الـ WORD هو دائماً 2 بايت بغض النظر عن معمارية المعالج. إذن إذا أردت أن أضمن أنني أستخدم متغير ذو حجم 2 بايت، فأنا مضطر لتعريف نوع جديد مثلاً MY2BYTES على ما يقابله ضمن المترجم المستخدم...

وسام البهنسي
مبرمج في يونيتي وإنفريمز

خبير  Mohammad Khashashneh مشاركة 8

I guess so, but as you said earlier, Windows predefines are always there.
unless you don’t use windows you don’t have to worry about it☺

من سار على الدرب وصل, من جد وجد...
بس عتبك على اللي بيسمع

خبير  سعيد بسيوني مشاركة 9

شكراً على كل هزا النقاش.
أنا كنت أقصد أن أحجام هذه المتغيرات معرفة كما زكرتها أنا في البداية بغض النظر عن أي نظام تشغيل... لكن الأمور الآن أوضح بكثير.

موهوب  حسن أيوب مشاركة 10

أعزائي,
ان حجم الword يعتمد بالاساس على cpu architecture, وعلى الcompiler أيضا.
وهذا حسب كتاب dietel and dietel

لا شيء مستحيل. الشي الوحيد المستحيل هو قول مستحيل. لذا لا تقلها.