Linux的编程模型

  • 编程模型

在标准C中规定,长整型(无论无符号或者有符号)至少占用32位

64位Linux采用的是LP64模型,这意味着Long, Pointer都是8字节。32位Linux采用的是ILP32模型,也就是Int Long Pointer均为4字节。Windows下32位是ILP32,64位是LLP64。

标准没有规定 long 长度,这是编译器和系统选择的。在OS的ABI中应当有数据类型大小的定义。

以下引自维基 64位数据模型

在32位程序中,指针和数据类型(例如整数)通常具有相同的长度。在64位计算机上不一定是这样。因此,在C等编程语言及其后代(例如C ++和Objective-C )中混合数据类型可能适用于32位实现,但不适用于64位实现。

在许多用于64位计算机上C和C派生语言的编程环境中,int变量仍然是32位宽,但是长整数和指针是64位宽。这些被描述为具有LP64 数据模型。另一个替代方法是ILP64数据模型,其中所有三种数据类型均为64位宽,甚至是短整数也为64位宽的SILP64。但是,在大多数情况下,所需的修改相对较小且简单明了,许多编写良好的程序可以简单地为新环境重新编译而无需更改。另一种替代方法是LLP64模型,它通过使两个保持与32位代码的兼容性int和long为32位。LL指的是long long整数类型,在包括32位环境在内的所有平台上至少为64位。

  • 64位架构(Intel)
    x86-64
    x86-64( 又称x64,即英文词64-bit extended,64位拓展的简写)是x86架构的64位拓展,向后兼容16位及32位的x86架构。x64于1999年由AMD设计,AMD首次公开64位集以扩展x86,称为“AMD64”。其后也被英特尔所采用,现在英特尔称之为“Intel 64”,在之前曾使用过“Clackamas Technology” (CT)、“IA-32e”及“EM64T”。

在Intel的开发手册上,用IA-32e表示64位的处理器架构


实践参考
将 Linux 应用程序移植到 64 位系统上

Linux的编程模型ILP32和LP64相关推荐

  1. 【Linux网络编程】

    文章目录 一. Linux的网络模型 1. 网络模型概述 2. Linux网络协议栈包含的网络协议 3. Linux网络编程模型 4. socket套接字编程模型 二. UDP编程 1 编程准备-字节 ...

  2. Linux io模型及函数调用,Linux 网络编程的5种IO模型:信号驱动IO模型

    Linux 网络编程的5种IO模型:信号驱动IO模型 背景 这一讲我们来看 信号驱动IO 模型. 介绍 情景引入: 在信号驱动IO模型中,当用户线程发起一个IO请求操作,会给对应的socket注册一个 ...

  3. 【Linux网络编程】并发服务器之select模型

    00. 目录 文章目录 00. 目录 01. 概述 02. I/O复用技术概述 03. select模型服务器实现思路 04. select模型服务器实现 05. 附录 01. 概述 服务器设计技术有 ...

  4. Linux网络编程---I/O复用模型之epoll

    https://blog.csdn.net/men_wen/article/details/53456474 Linux网络编程-I/O复用模型之epoll 1. epoll模型简介 epoll是Li ...

  5. Linux网络编程---I/O复用模型之poll

    https://blog.csdn.net/men_wen/article/details/53456474 Linux网络编程-I/O复用模型之poll 1.函数poll poll系统调用和sele ...

  6. Linux网络编程---I/O复用模型之select

    https://blog.csdn.net/men_wen/article/details/53456435 Linux网络编程-I/O复用模型之select 1. IO复用模型 IO复用能够预先告知 ...

  7. aio 系统原理 Java_Java新一代网络编程模型AIO原理及Linux系统AIO介绍

    从JDK 7版本开始,Java新加入的文件和网络io特性称为nio2(new io 2, 因为jdk1.4中已经有过一个nio了),包含了众多性能和功能上的改进,其中最重要的部分,就是对异步io的支持 ...

  8. Linux 多线程编程(实现生产者消费者模型)

    Linux 多线程编程 线程分类 线程按照其调度者可以分为用户级线程和内核级线程两种. 内核级线程 在一个系统上实现线程模型的方式有好几种,因内核和用户空间提供的支持而有一定程度的级别差异.最简单的模 ...

  9. alin的学习之路(Linux网络编程:十)(http协议,BS模型)

    alin的学习之路(Linux网络编程:十)(http协议,BS模型) 需求:使用B/S模型来访问主机中的文件(包括目录) 0. B/S 模型 注意事项 1. 浏览器请求ico ​ 准备一个favic ...

最新文章

  1. Magento 如何在注册页面调出Address Information
  2. 软件开发中 前台、中台、后台英文_中台产品那些事儿-啥是中台
  3. toast弹窗_Android 开发(一):Toast弹窗与获取控件的值
  4. 视觉SLAM笔记(4) SLAM的数学表述
  5. 大厂面试常问的机器学习,计算机视觉怎么学?详细指南来了!
  6. zookeeper和k8s_学习 ZooKeeper(二): ZooKeeper on Kubernetes
  7. 字节码指令之控制转移指令
  8. 基本知识 100028
  9. 【Jmeter】元件实战:Jmeter 连接 mysql 数据库 / 数据池配置 —— JDBC Connection  Configuration
  10. 余弦距离的应用 -- cosine distance
  11. 浪漫主义和革命英雄主义的回忆
  12. 国产机免流下载网上资源方法(仅限移动用户
  13. 不谈高级原理,只用简单的语言来聊聊机器学习
  14. suma: error while loading shared libraries: libGLw.so.1: cannot open shared object file: No such
  15. Xcode工程文件pbxproj
  16. 图片实测:智能鉴黄,哪家强?
  17. 意念控制四旋翼 学习笔记
  18. ESP32存储配网信息+LED显示配网状态+按键清除配网信息(附源码)
  19. Tracker 服务器源码分析之四:Tracker 类
  20. 汤晓丹的第四版计算机操作系统--第三章总结概述

热门文章

  1. java弹力球游戏_小班弹力球游戏教案
  2. Gibbs Sampler
  3. 定时任务的 执行时间设置规则
  4. mysql语法错误:Every derived table must have its own alias
  5. CCF-CSP 小中大 C语言
  6. CSP CCF: 201903-1 小中大 (C++)
  7. ITK-SANP 使用指南
  8. 程序员的奋斗史(十八)——人活着,只是一种态度
  9. 【多项式最小二乘拟合实验】
  10. Rebus渲染农场分析