التعليق على مشاركة سعيد بسيوني في 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.
من سار على الدرب وصل, من جد وجد...
بس عتبك على اللي بيسمع
على حسب علمي، فإن الأنواع WORD و BYTE و DWORD هي معروفة ذات أحجام ثابتة بغض النظر عن الـ platform. يعني أنك عندما تستخدم DWORD فإنه سيكون 4 بايتات مهما كان نوع المترجم/نظام التشغيل. بالمقابل، المتغيرات int، short، و long كلها غير ذات أحجام محددة. لكنها تضمن لك range معين (على ما أذكر). بالمناسبة، المتغير char حتى غير محدد في مواصفات الـ ANSI إذا كان signed أو unsigned. في ++VC يعتبر signed...
التعليق على مشاركة وسام البهنسي في 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
من سار على الدرب وصل, من جد وجد...
بس عتبك على اللي بيسمع
التعليق على مشاركة 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 فإننا نكتب:
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.
من سار على الدرب وصل, من جد وجد...
بس عتبك على اللي بيسمع
جزيل الشكر على الرابط... كانت لدي الفكرة أن الـ WORD هو دائماً 2 بايت بغض النظر عن معمارية المعالج. إذن إذا أردت أن أضمن أنني أستخدم متغير ذو حجم 2 بايت، فأنا مضطر لتعريف نوع جديد مثلاً MY2BYTES على ما يقابله ضمن المترجم المستخدم...