Linux的编程模型ILP32和LP64
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相关推荐
- 【Linux网络编程】
文章目录 一. Linux的网络模型 1. 网络模型概述 2. Linux网络协议栈包含的网络协议 3. Linux网络编程模型 4. socket套接字编程模型 二. UDP编程 1 编程准备-字节 ...
- Linux io模型及函数调用,Linux 网络编程的5种IO模型:信号驱动IO模型
Linux 网络编程的5种IO模型:信号驱动IO模型 背景 这一讲我们来看 信号驱动IO 模型. 介绍 情景引入: 在信号驱动IO模型中,当用户线程发起一个IO请求操作,会给对应的socket注册一个 ...
- 【Linux网络编程】并发服务器之select模型
00. 目录 文章目录 00. 目录 01. 概述 02. I/O复用技术概述 03. select模型服务器实现思路 04. select模型服务器实现 05. 附录 01. 概述 服务器设计技术有 ...
- Linux网络编程---I/O复用模型之epoll
https://blog.csdn.net/men_wen/article/details/53456474 Linux网络编程-I/O复用模型之epoll 1. epoll模型简介 epoll是Li ...
- Linux网络编程---I/O复用模型之poll
https://blog.csdn.net/men_wen/article/details/53456474 Linux网络编程-I/O复用模型之poll 1.函数poll poll系统调用和sele ...
- Linux网络编程---I/O复用模型之select
https://blog.csdn.net/men_wen/article/details/53456435 Linux网络编程-I/O复用模型之select 1. IO复用模型 IO复用能够预先告知 ...
- aio 系统原理 Java_Java新一代网络编程模型AIO原理及Linux系统AIO介绍
从JDK 7版本开始,Java新加入的文件和网络io特性称为nio2(new io 2, 因为jdk1.4中已经有过一个nio了),包含了众多性能和功能上的改进,其中最重要的部分,就是对异步io的支持 ...
- Linux 多线程编程(实现生产者消费者模型)
Linux 多线程编程 线程分类 线程按照其调度者可以分为用户级线程和内核级线程两种. 内核级线程 在一个系统上实现线程模型的方式有好几种,因内核和用户空间提供的支持而有一定程度的级别差异.最简单的模 ...
- alin的学习之路(Linux网络编程:十)(http协议,BS模型)
alin的学习之路(Linux网络编程:十)(http协议,BS模型) 需求:使用B/S模型来访问主机中的文件(包括目录) 0. B/S 模型 注意事项 1. 浏览器请求ico 准备一个favic ...
最新文章
- Magento 如何在注册页面调出Address Information
- 软件开发中 前台、中台、后台英文_中台产品那些事儿-啥是中台
- toast弹窗_Android 开发(一):Toast弹窗与获取控件的值
- 视觉SLAM笔记(4) SLAM的数学表述
- 大厂面试常问的机器学习,计算机视觉怎么学?详细指南来了!
- zookeeper和k8s_学习 ZooKeeper(二): ZooKeeper on Kubernetes
- 字节码指令之控制转移指令
- 基本知识 100028
- 【Jmeter】元件实战:Jmeter 连接 mysql 数据库 / 数据池配置 —— JDBC Connection Configuration
- 余弦距离的应用 -- cosine distance
- 浪漫主义和革命英雄主义的回忆
- 国产机免流下载网上资源方法(仅限移动用户
- 不谈高级原理,只用简单的语言来聊聊机器学习
- suma: error while loading shared libraries: libGLw.so.1: cannot open shared object file: No such
- Xcode工程文件pbxproj
- 图片实测:智能鉴黄,哪家强?
- 意念控制四旋翼 学习笔记
- ESP32存储配网信息+LED显示配网状态+按键清除配网信息(附源码)
- Tracker 服务器源码分析之四:Tracker 类
- 汤晓丹的第四版计算机操作系统--第三章总结概述