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

Prayer

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

對于hp 32bit位 和64bit的區(qū)別

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

一,前言

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

64 位計算

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

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

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

 

二,對于hp 32bit位 和64bit的區(qū)別

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
 

最主要的區(qū)別是long型和pointer型數(shù)據(jù)。

三,32bit機數(shù)據(jù)在內(nèi)容中的說明

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

B)       對于pointer型數(shù)據(jù),因為內(nèi)容是地址,要求該地址也必須是4整數(shù)倍。

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型指針指向的內(nèi)容只能是1字節(jié)的數(shù)據(jù)。如果將

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

 對應的內(nèi)容)

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

  }

 

結構體的內(nèi)存分配如下:

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機數(shù)據(jù)在內(nèi)容中的說明

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

B)       對于pointer型數(shù)據(jù),因為內(nèi)容是地址,要求該地址也必須是8整數(shù)倍。

C)       例如:

main()

{

  struct student

  {

    int i;   /*8個字節(jié)的存儲空間,*/

    long l; /*8個字節(jié)的存儲空間,*/

  }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機下,內(nèi)存對齊的例子

  正確:

   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*/

}

六,程序中的內(nèi)存分配淺談

一.存空間的對齊規(guī)則

首先看一段例子:
    ……
    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類型的變量是只占用一個字節(jié)的,用sizeof(char)得到的結果也會是1。但在這里我們看到,c1和c2都被分配了4個字節(jié)的存儲空間,在32bit機下,在為變量/對象分配內(nèi)存的時候,總是以4字節(jié)對齊,無論你的變量類型是什么。也就是說,任何一個變量/對象的存儲空間都是以4的整數(shù)倍的地址開始的。64bit機下,都是8的倍數(shù)。

 

 

本文來自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| 亚洲国产毛片完整版| 亚洲大片精品永久免费| 在线观看不卡| 亚洲人人精品| 中日韩午夜理伦电影免费| 亚洲一区三区在线观看| 午夜精品一区二区三区电影天堂 | 亚洲欧美综合精品久久成人 | 欧美成人在线网站| 欧美精选午夜久久久乱码6080| 欧美va亚洲va日韩∨a综合色| 欧美精品v国产精品v日韩精品| 欧美精品激情blacked18| 国产精品视频一二| 狠狠久久亚洲欧美专区| 日韩一区二区精品葵司在线| 午夜精品久久久久影视| 欧美a级大片| 中日韩美女免费视频网站在线观看| 午夜精品一区二区三区电影天堂 | 久久午夜激情| 亚洲精选成人| 久久久精品午夜少妇| 欧美日韩一区二区三区在线观看免 | 久久噜噜噜精品国产亚洲综合| 欧美α欧美αv大片| 夜夜嗨av一区二区三区四区| 久久精品国产2020观看福利| 欧美日精品一区视频| 亚洲第一页中文字幕| 欧美亚洲日本网站| 亚洲精品免费在线播放| 欧美亚洲免费在线| 欧美日韩亚洲一区| 亚洲黄一区二区三区| 欧美一区高清| 在线亚洲一区| 欧美—级a级欧美特级ar全黄| 狠狠v欧美v日韩v亚洲ⅴ| 亚洲欧美韩国| 亚洲乱码久久| 在线观看成人网| 伊人久久婷婷| 欧美中文字幕在线播放| 91久久国产自产拍夜夜嗨| 久久精品1区| 国产欧美在线观看| 午夜免费日韩视频| 亚洲特色特黄| 国产精品红桃| 亚洲午夜精品福利| 亚洲三级毛片| 欧美日韩视频专区在线播放| 日韩一级黄色片| 亚洲理伦电影| 欧美日韩成人一区| 日韩一级视频免费观看在线| 亚洲丰满少妇videoshd| 久久精品综合网| 激情文学一区| 久热re这里精品视频在线6| 欧美一区二区三区免费在线看| 国产精品高潮呻吟久久| 亚洲一区二区三区免费视频| 99精品视频一区二区三区| 国产精品video| 亚洲欧美日韩国产综合在线 | 国产一区二区按摩在线观看| 欧美中文字幕不卡| 久久精品国产99精品国产亚洲性色| 国产亚洲激情| 欧美国产综合| 欧美日韩国产系列| 亚欧成人在线| 久久久久久一区二区| 91久久中文| 夜夜爽www精品| 国产欧美日韩综合一区在线观看 | 一本色道久久综合狠狠躁篇怎么玩| 亚洲国产精品久久久久秋霞不卡| 欧美电影免费观看网站| 亚洲无毛电影| 久久国产精品72免费观看| 亚洲福利视频网站| 99国产成+人+综合+亚洲欧美| 国产精品丝袜久久久久久app| 久久久国产午夜精品| 欧美电影美腿模特1979在线看| 亚洲在线成人精品| 久久久久国色av免费观看性色| 日韩一级黄色av| 久久精品99无色码中文字幕 | 亚洲免费在线| 欧美国产免费| 欧美激情91| 欧美日韩伊人| 久久午夜视频| 欧美性猛交xxxx乱大交退制版| 久久久免费精品视频| 欧美精品在线极品| 久久精品日韩欧美| 欧美日本中文| 嫩草国产精品入口| 欧美视频精品在线观看| 麻豆成人av| 国产精品第一页第二页第三页| 欧美~级网站不卡| 国产精品国产精品国产专区不蜜| 美女被久久久| 国产精品自拍一区| 亚洲精品社区| 亚洲免费一在线| 日韩视频二区| 久久久综合激的五月天| 久久av二区| 国产精品成人播放| 91久久午夜| 亚洲精品日韩一| 久久人人97超碰国产公开结果 | 亚洲欧美成人一区二区三区| 老鸭窝亚洲一区二区三区| 久久激情视频免费观看| 欧美午夜电影完整版| 亚洲激情在线激情| 在线免费一区三区| 久久国产精品久久久久久| 欧美一区二区视频在线| 国产精品久久久久久久久久久久久| 亚洲国产精品ⅴa在线观看| 国精产品99永久一区一区| 亚洲专区一区二区三区| 性色av一区二区三区在线观看| 欧美日本不卡高清| 亚洲人成网站777色婷婷| 亚洲免费观看高清在线观看 | 中文成人激情娱乐网| 欧美激情综合网| 亚洲精选一区| 亚洲一区二区三区中文字幕| 欧美日韩国产成人在线免费| 亚洲精品久久久久久久久久久久久| 亚洲激情视频在线播放| 欧美国产精品久久| 亚洲精选成人| 亚洲欧美激情视频| 国产欧美精品一区二区三区介绍| 亚洲一二三区在线| 久久噜噜亚洲综合| 亚洲欧洲日韩综合二区| 欧美日韩国产丝袜另类| 亚洲摸下面视频| 亚洲第一搞黄网站| 美女视频一区免费观看| 亚洲电影免费观看高清完整版在线观看| 影音先锋亚洲电影| 欧美在线视频导航| 欧美激情一区二区三区在线| 亚洲久久视频| 久久av一区二区三区漫画| 狠狠入ady亚洲精品经典电影| 男同欧美伦乱| 亚洲视频精选在线| 久久―日本道色综合久久| 亚洲黄色成人网| 国产精品成人一区二区艾草| 欧美综合国产精品久久丁香| 亚洲国内在线| 久久成人综合网| 亚洲精品在线免费观看视频| 国产精品区免费视频| 女主播福利一区| 亚洲在线黄色| 最新国产の精品合集bt伙计| 羞羞视频在线观看欧美| 亚洲精品国产系列| 国产视频不卡| 欧美性猛交一区二区三区精品| 欧美一区在线看| 日韩视频第一页| 蜜桃av综合| 欧美在线网址| 亚洲尤物影院| 一本色道久久综合| 玉米视频成人免费看| 国产精品蜜臀在线观看| 欧美第十八页| 老司机67194精品线观看| 在线亚洲一区| 亚洲理论电影网| 亚洲高清不卡在线观看| 久久久91精品国产一区二区三区 | 久久久噜噜噜久久人人看| av成人黄色| 亚洲激情一区二区| 亚洲电影毛片| 精品91免费| 国产亚洲精品成人av久久ww|