青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

Prayer

在一般中尋求卓越
posts - 1256, comments - 190, trackbacks - 0, articles - 0
  C++博客 :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

對于hp 32bit位 和64bit的區別

Posted on 2009-10-09 09:31 Prayer 閱讀(969) 評論(0)  編輯 收藏 引用 所屬分類: C/C++

一,前言

  使用64位體系結構對應用程序的開發者來說,Solaris 64位操作系統和32位操作系統之間的最大差別在于它們使用的C語言數據類型模型。64位操作系統使用LP64模型,在LP64模型中long類型和指針類型是64位的。其他基本數據類型和32位的模型一樣。32位數據類型使用ILP32模型,其中的int,long和指針類型都是32位的。下面列出了64位環境的主要特點和使用時需要考慮的問題。l 巨大的虛擬地址空間在64位環境中,一個進程可以有多達64位寬的虛擬地址空間,或18 exabytes(18*260字節)。這是32位環境中4G虛擬地址空間的四十億倍。由于硬件的限制,有的64位平臺無法完全支持64位的地址空間。大地址空間使得系統可以創建更多的線程,在32位平臺上一個缺省的線程需要1M堆棧,在64位平臺上一個缺省的線程需要2M堆棧。在32位平臺上可以創建4000個缺省線程,在64位平臺上可以創建8萬億個缺省線程。l 使用核心內存的程序由于系統核心內部也使用64位的數據結構,所以現存的程序,如果使用了libkvm,/dev/mem或/dev/kmem,將無法再在64位環境中運行。必須將這樣的程序轉變為64位的程序。l /proc的限制一個使用/proc的32位應用程序可以訪問32位進程的屬性,但無法訪問一個64位進程的屬性;現存的描述進程的接口和數據結構不能包含所涉及的64位的量。這種程序必須重新編譯成64位應用程序,這樣才能訪問32位和64位進程的屬性。l 64位庫32位的應用程序必須和32位的庫鏈接在一起,64位的應用程序必須和64位的庫鏈接在一起。除了過時的庫,所有的庫都有32位和64位兩種版本。但沒有一個64位庫是靜態鏈接庫。l 64位運算盡管在32位的Solaris系統中已經有64位運算了,但64位的實現為整數操作和參數傳遞提供了完全64位的機器寄存器。l 大文件如果一個程序只需要支持大文件,使用32位Solaris的大文件接口就可以了。但是為了充分的利用64位的優點,最好把程序轉變為64位代碼。

64 位計算

Red Hat 和很多其它發行商為 Compaq/DEC Alpha 提供了一種 64 位版的 Linux。您可以在 AlphaLinux Web 站點上了解關于這種 Linux 的其它信息。64 位的 Solaris 和 64 位的 Linux/Alpha 都使用 LP64 數據模型,它能夠帶來很好的兼容性。

不久,Intel Itanium(TM) IA-64 處理器也能使用一種 64 位版的 Linux。您可以在 IA-64 Linux Project Web 站點了解關于這種 Linux 的更多信息。一種支持 IBM 64 位 PowerPC 體系結構的 Linux 也在開發之中。

請注意,盡管 SuSE Linux/UltraSPARC 的內核運行在 64 位的模式中,但 SuSE Linux/UltraSPARC 目前并不支持 64 位的用戶空間應用程序。

 

二,對于hp 32bit位 和64bit的區別

hp C/HP-UX 32-bit and 64-bit base data types
 
data type
 ILP32 size (bits)
 LP64 size (bits)
 
char
 8
 8
 
short
 16
 16
 
int
 32
 32
 
long
 32
 64
 
long long (1)
 64
 64
 
pointer
 32
 64
 
float
 32
 32
 
double
 64
 64
 
long double
 128
 128
 
enum (2)
 32
 32
 

最主要的區別是long型和pointer型數據。

三,32bit機數據在內容中的說明

A)       在為變量/對象分配內存的時候,總是以4字節對齊,無論你的變量類型是什么。也就是說,任何一個變量/對象的存儲空間都是以4的整數倍的地址開始的。

B)       對于pointer型數據,因為內容是地址,要求該地址也必須是4整數倍。

C)       例如:

main()

{

  struct student

  {

    int i;

    long l;

  }node;

 

  struct student *p;

 

  p=&node;

 

  int *pp;

  char *qq;

  long *ll;

 

  p->i=1;

  p->l=2;

  pp=(int *)p;

  qq=(char *)p;

  ll=(long *)p;

 

  printf("int pp l=%d\n",*(pp+1));   /*result =2*/

printf("char  qq l=%d\n",*(qq+7)); /*result =2*/

(char型指針指向的內容只能是1字節的數據。如果將

  p->l賦更大的值22222,*(qq+7))只能取到地址為0x200000007ffff657

 對應的內容)

  printf("long ll l=%d\n",*(ll+1));  /*result =2*/

  }

 

結構體的內存分配如下:

0x200000007ffff650:  0x00000001    0x00000002    0x00000000    0x00000000

0x200000007ffff660:  0x00000190    0x000002ec    0x000017a0    0x00000002

0x200000007ffff670:  0x00000000    0x00000000

圖解如下:

 

pp,qq,ll
 
Adress
  data
 
0x200000007ffff650
 00
 
0x200000007ffff651
 00
 
0x200000007ffff652
 00
 
0x200000007ffff653
 01
 
0x200000007ffff654
 l
 
00
 
0x200000007ffff655
 00
 
0x200000007ffff656
 00
 
0x200000007ffff657
 02
 
0x200000007ffff658
 
 
0x200000007ffff659
 
 
0x200000007ffff65A
 
 

i
 

 

四,64bit機數據在內容中的說明

A)       在為變量/對象分配內存的時候,總是以8字節對齊,無論你的變量類型是什么。也就是說,任何一個變量/對象的存儲空間都是以8的整數倍的地址開始的。

B)       對于pointer型數據,因為內容是地址,要求該地址也必須是8整數倍。

C)       例如:

main()

{

  struct student

  {

    int i;   /*8個字節的存儲空間,*/

    long l; /*8個字節的存儲空間,*/

  }node;

 

  struct student *p;

 

  p=&node;

 

  int *pp;

  char *qq;

  long *ll;

 

  p->i=1;

  p->l=222222222;

  pp=(int *)p;

  qq=(char *)p;

  ll=(long *)p;

 

  printf("int pp l=%d\n",*(pp+2));/*result int pp l=222222222*/

  printf("char  qq l=%d\n",*(qq+15));/*result int pp 13*/

  printf("long ll l=%d\n",*(ll+1));/*result int pp l=222222222*/

}

 

 

 

 

 

五,64bit機下,內存對齊的例子

  正確:

   int main()

{

        long i;

        char a[44];

        long *p;

 

        p=(char *)(a+8);

        *p=3;

        printf("*p=%d\n",*p); /*result = 3*/

}

錯誤:

void main()

{

        long i;

        char a[44];

        long *p;

        p=a+4;

        *p=3;

    printf("*p=%d\n",*p); /*bus error*/

}

六,程序中的內存分配淺談

一.存空間的對齊規則

首先看一段例子:
    ……
    int  i1;
    char c1;
    char c2;
    int  i2;

cout << "i1:" <<&i1 << "\n";
    cout << "c1:" <<(void *)&c1 << "\n";
    cout << "c2:" <<(void *)&c2 << "\n";
    cout << "i2:" <<&i2 << "\n";
    ……
輸出結果如下:
i1:0012FF4C
c1:0012FF48
c2:0012FF44
i2:0012FF40
是不是有些奇怪?
我們知道char類型的變量是只占用一個字節的,用sizeof(char)得到的結果也會是1。但在這里我們看到,c1和c2都被分配了4個字節的存儲空間,在32bit機下,在為變量/對象分配內存的時候,總是以4字節對齊,無論你的變量類型是什么。也就是說,任何一個變量/對象的存儲空間都是以4的整數倍的地址開始的。64bit機下,都是8的倍數。

 

 

本文來自CSDN博客,轉載請標明出處:http://blog.csdn.net/jiantiantian/archive/2008/12/17/3540923.aspx

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            亚洲一区成人| 蜜臀av一级做a爰片久久| 久久精品国产视频| 午夜精品视频在线| 欧美亚洲一区| 久久综合久久综合九色| 老司机午夜精品| 亚洲国产欧美一区二区三区久久 | 性色一区二区| 西西人体一区二区| 久久久久久久久久久久久9999| 久久午夜色播影院免费高清| 欧美精品成人| 国产色产综合色产在线视频| 尤物视频一区二区| 一本色道久久综合| 久久久久久综合| 亚洲精品在线免费观看视频| 午夜精品免费在线| 欧美高清视频一区二区三区在线观看| 欧美色精品在线视频| 国模大胆一区二区三区| 一区二区三区日韩在线观看| 久久精品国产久精国产一老狼| 亚洲成人在线视频播放| 亚洲美女一区| 久久青青草综合| 国产精品日韩一区二区三区| 91久久线看在观草草青青| 先锋亚洲精品| 91久久香蕉国产日韩欧美9色| 午夜精品视频在线| 欧美四级在线观看| 亚洲国产精品悠悠久久琪琪| 久久se精品一区二区| 日韩一区二区精品葵司在线| 久久精品国产96久久久香蕉| 国产精品久久久久久亚洲毛片| 91久久精品视频| 久热综合在线亚洲精品| 这里只有精品在线播放| 欧美精品一区二区三区视频| 在线欧美日韩国产| 欧美综合国产精品久久丁香| 猛男gaygay欧美视频| 亚洲视频在线看| 欧美大片va欧美在线播放| 国产精品免费看| 9久re热视频在线精品| 女人色偷偷aa久久天堂| 欧美一区二区精品| 国产精品伊人日日| 日韩亚洲欧美一区| 亚洲国产高清一区| 浪潮色综合久久天堂| 国产欧美欧美| 久久精品国产96久久久香蕉| 午夜精品福利视频| 国产亚洲综合精品| 久久久国产亚洲精品| 欧美一区在线直播| 黄色成人小视频| 欧美大片在线观看一区二区| 麻豆av福利av久久av| 亚洲人成人一区二区在线观看 | 亚洲国内精品| 欧美精品久久天天躁| 一区二区三区你懂的| 一区二区91| 国产精品丝袜白浆摸在线| 欧美尤物一区| 久久国产视频网| 亚洲二区在线观看| 亚洲精品系列| 国产精品日韩欧美大师| 久久天天躁狠狠躁夜夜爽蜜月| 久久精品国产视频| 亚洲区国产区| 亚洲视频观看| 在线观看成人av电影| 亚洲欧洲日本一区二区三区| 国产精品美女久久久浪潮软件| 欧美影院一区| 牛牛影视久久网| 午夜精品一区二区三区在线视 | 欧美性猛交一区二区三区精品| 欧美在线免费| 免费在线看成人av| 亚洲免费视频在线观看| 久久精品国产综合精品| 一区二区三区精品| 久久成人免费网| 亚洲最新合集| 欧美一区二区精美| 亚洲视频精选| 久久免费偷拍视频| 午夜精品视频在线观看一区二区 | 国内精品视频在线观看| 亚洲国产精品va在看黑人| 亚洲激情偷拍| 欧美日韩卡一卡二| 亚洲九九九在线观看| 亚洲精品你懂的| 亚洲黄一区二区三区| 久久精品夜色噜噜亚洲aⅴ| 亚洲激情第一页| 欧美制服丝袜第一页| 亚洲成色www久久网站| 国产精品私人影院| 欧美日韩激情网| 欧美在线视频日韩| 亚洲视频播放| 日韩午夜免费视频| 欧美99久久| 欧美福利影院| 亚洲国产精品va| 亚洲承认在线| 亚洲日本乱码在线观看| 国产欧美精品xxxx另类| 欧美亚洲成人精品| 欧美日本国产一区| 欧美日韩黄视频| 国产精品理论片| 国产欧美综合一区二区三区| 欧美视频一区| 国内精品久久久久久久果冻传媒 | 久久精品免费观看| 欧美在线免费| 久久综合久久久久88| 欧美国产日韩免费| 国产精品久久久久久久午夜 | 在线视频一区二区| 亚洲一区精品视频| 一区二区三区视频在线观看| 在线视频精品一| 久久亚洲春色中文字幕久久久| 免费在线亚洲欧美| 在线亚洲一区二区| 欧美α欧美αv大片| 国产精品主播| 夜夜夜久久久| 欧美激情va永久在线播放| 亚洲欧美成人一区二区三区| 美女精品在线| 狠狠色综合网站久久久久久久| 在线亚洲观看| 亚洲欧洲另类国产综合| 久久久亚洲一区| 国内欧美视频一区二区| 欧美中文字幕| 午夜日韩在线| 国产一区二区三区久久悠悠色av| 一本色道久久88综合亚洲精品ⅰ | 久久久国产视频91| 亚洲欧美日产图| 国产亚洲欧美日韩在线一区| 亚洲视频在线二区| 日韩一区二区久久| 国产精品黄色| 午夜国产精品视频| 亚洲——在线| 国产一区清纯| 欧美高清自拍一区| 欧美日韩亚洲视频一区| 亚洲欧洲精品一区二区三区波多野1战4| 美女久久一区| 欧美国产视频在线| 亚洲夜间福利| 欧美一区国产二区| 亚洲一区中文| 久久av一区二区三区亚洲| 在线观看久久av| 亚洲人永久免费| 国产日韩亚洲欧美综合| 欧美黄色一区二区| 亚洲国产导航| 国产精品久久久久久超碰| 久久亚洲一区二区| 欧美日韩亚洲一区二区三区| 午夜精品区一区二区三| 美女网站久久| 久久精品九九| 欧美午夜电影完整版| 亚洲电影网站| 国内精品久久久久影院色| 一本大道久久a久久综合婷婷| 激情久久久久久久久久久久久久久久| 亚洲日本欧美| 亚洲国产精品va在线看黑人| 午夜精品久久久久久久久久久| 一区二区久久| 欧美日本国产精品| 亚洲精品国产精品国自产在线| 激情欧美一区| 久久久久国产精品午夜一区| 久久精品最新地址| 国产精品久久久久国产精品日日| 亚洲成人资源| 亚洲影视在线播放| 国产精品乱码一区二区三区|