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

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>
            亚洲手机在线| 亚洲茄子视频| 久久影院午夜论| 国产精品99久久久久久久久 | 中国亚洲黄色| 欧美理论在线| 日韩网站在线看片你懂的| 欧美成人国产| 免费成人黄色片| 在线不卡中文字幕| 免费短视频成人日韩| 久久九九全国免费精品观看| 国户精品久久久久久久久久久不卡| 翔田千里一区二区| 亚洲综合色激情五月| 国产精品日韩在线一区| 午夜精品在线观看| 欧美亚洲尤物久久| 国内精品久久久久影院 日本资源| 久久久精品一品道一区| 久久乐国产精品| 亚洲经典自拍| 亚洲日本欧美| 欧美午夜激情在线| 久久激情综合| 久久天天躁狠狠躁夜夜爽蜜月| 影音先锋久久久| 亚洲国产精品999| 欧美精品一卡二卡| 午夜精品福利一区二区三区av| 亚洲综合日韩| 黄色亚洲大片免费在线观看| 欧美成年人视频网站| 欧美理论大片| 欧美在线一二三四区| 久久资源av| 一区二区三区四区国产| 亚洲制服av| 亚洲国产精品久久久久婷婷884| 亚洲国产小视频| 国产精品久久久久久久午夜 | 亚洲欧美日韩直播| 亚洲在线成人精品| 一区二区视频免费完整版观看| 欧美激情影音先锋| 国产精品99免视看9| 久久精品国产免费看久久精品| 美玉足脚交一区二区三区图片| 亚洲视频一二区| 久久国内精品自在自线400部| 亚洲三级电影在线观看| 亚洲欧美日韩国产| 亚洲精品午夜精品| 性久久久久久久久| 日韩午夜中文字幕| 欧美一级视频一区二区| 日韩视频不卡| 久久精品系列| 亚洲一区在线观看视频 | 欧美精品福利| 久久精品伊人| 欧美日韩亚洲一区| 欧美jizz19性欧美| 国产日韩欧美夫妻视频在线观看| 亚洲日本成人在线观看| 亚洲第一福利在线观看| 欧美一区二区视频网站| 亚洲一区二区黄色| 欧美大片第1页| 两个人的视频www国产精品| 国产精品久久久久一区二区三区共| 亚洲高清不卡av| 亚洲第一成人在线| 久久久久久成人| 久久久99精品免费观看不卡| 国产精品videosex极品| 亚洲精品乱码久久久久久日本蜜臀 | 一区二区三区在线视频观看| 亚洲免费影视第一页| 一区二区三区蜜桃网| 欧美成人免费在线| 欧美成人精品在线观看| 国产一区二区三区在线播放免费观看 | 亚洲欧美怡红院| 欧美片网站免费| 亚洲国产婷婷香蕉久久久久久| 在线观看日韩国产| 麻豆精品视频| 欧美成人综合在线| 亚洲国内欧美| 欧美11—12娇小xxxx| 欧美国产国产综合| 亚洲电影激情视频网站| 久久夜色精品亚洲噜噜国产mv| 麻豆亚洲精品| 久久久精品性| 一区二区三区在线高清| 欧美一区二区视频在线观看| 欧美亚洲网站| 国产伦精品一区| 亚洲欧美资源在线| 久久男人av资源网站| 国语自产精品视频在线看抢先版结局| 亚洲欧美在线免费| 久久亚洲美女| 亚洲国产成人精品久久| 欧美成人精品1314www| 亚洲片国产一区一级在线观看| 一本色道久久综合亚洲精品小说 | 亚洲精品国产系列| 亚洲天堂av综合网| 国产精品一区在线观看| 久久av一区二区| 亚洲福利免费| 亚洲欧美日韩在线综合| 韩国女主播一区二区三区| 狂野欧美激情性xxxx欧美| 亚洲人成77777在线观看网| 亚洲免费在线播放| 激情文学一区| 欧美日韩免费观看一区| 亚洲图片激情小说| 免费欧美在线| 亚洲欧美日韩精品在线| 韩国自拍一区| 欧美精品久久久久久久| 亚洲免费在线视频一区 二区| 久久综合久久久久88| 一本久久综合亚洲鲁鲁| 国产欧美日韩一区二区三区| 久久综合九色| 亚洲视频在线观看网站| 你懂的网址国产 欧美| 亚洲综合色丁香婷婷六月图片| 国产综合欧美在线看| 欧美三区美女| 免费在线观看日韩欧美| 亚洲专区一区| 亚洲国产一区在线观看| 久久精品99| 一区二区三区欧美在线| 黄色欧美日韩| 国产乱码精品一区二区三区五月婷| 美国十次成人| 性欧美暴力猛交69hd| 亚洲精品在线一区二区| 久久午夜精品一区二区| 亚洲手机成人高清视频| 91久久香蕉国产日韩欧美9色| 国产精品实拍| 欧美日韩123| 久久亚洲色图| 欧美一区1区三区3区公司| 一区二区欧美在线观看| 亚洲成人资源网| 久久野战av| 欧美在线免费一级片| 亚洲天堂免费在线观看视频| 亚洲黄色免费网站| 黄色成人av| 国产亚洲精品7777| 国产精品大片免费观看| 欧美激情中文字幕一区二区| 久久这里有精品视频| 欧美大秀在线观看| 国产乱码精品一区二区三| 欧美日韩精品欧美日韩精品| 男人的天堂成人在线| 久久国产天堂福利天堂| 午夜在线视频观看日韩17c| 亚洲天堂男人| 亚洲一品av免费观看| 99成人精品| 国产精品99久久久久久白浆小说 | 久久亚洲二区| 久久久精品999| 久久经典综合| 久久精品在这里| 久久精品一区蜜桃臀影院| 久久精品国产一区二区三| 久久国产福利| 久久久综合网| 欧美国产欧美综合 | 久久爱www久久做| 久久国产精品毛片| 久久精品女人的天堂av| 久久久久久久综合狠狠综合| 久久久国产一区二区| 久久综合色播五月| 欧美岛国在线观看| 亚洲国产成人精品女人久久久 | 国产精品毛片在线| 国产精品一区二区欧美| 国产自产2019最新不卡| 一区二区在线不卡| 亚洲精品黄色| 亚洲欧美日韩国产一区| 久久久www成人免费无遮挡大片| 久久人人爽人人爽| 亚洲福利专区|