Linux的可移植性

不顾可移植性,尽可能多地使用汇编代码。
linux在可移植性上,走的是中间路线,所有接口和核心代码都是用的c语言,但是对于性能要求高的部分都会根据硬件进行调整。

体系结构

说到计算机的体系结构,具体包含计算机的指令集架构,处理器组织,总线结构,存储体系结构等。
即软硬件。

字长

当人们说某个机器是多少位时,说的就是字长。
处理器寄存器的大小和它的字长是一样的。

对于一个体系结构,它的各个部位(比如内存总线)最少也要和它的字长一样大。

虚拟空间的大小取决于字长

虚拟地址空间的大小决定了一个程序能够寻址的内存数量,但实际上物理内存的大小可能比虚拟地址空间小得多。字长决定了虚拟地址空间的最大大小。

Linux的一些可移植性准则

一个char的长度一定是1字节。
尽管没有规定int类型的长度是32位,但在linux当前支持的所有体系中,都是32位的。
尽管没有规定short类型的长度为16位,但在linux当前支持的所有体系中,都是16位的。
不应该假定long和指针的长度,在linux现在支持的体系中,它们可能是32位或者64位的。

char型的符号问题

C标准表示char类型可以带符号也可以不带符号,有具体的处理器和编译器决定。
在大部分体系结构上,char默认是带符号的(-128到127)。
保险就是

signed char i = -1;
unsigned char = 255;

数据对齐

数据对齐是指在计算机中,数据在内存中存储时按照一定规则排列的过程。通常,数据类型有特定的字节对齐要求,以便在访问内存时提高效率。
常见的对齐规则包括:

  • 字节对齐(Byte Alignment): 数据存储的起始地址必须是其字节大小的整数倍。
  • 字对齐(Word Alignment): 数据存储的起始地址必须是字的整数倍。
    通常数据对齐是gcc老哥需要考虑的。

字节(字节是最小单位)顺序:大端小端

大端序(Big-Endian)
先读高位字节。

小端序(Little-Endian)
先读低位字节。

eg。
00000000 0000000 00000100 00000011
大端先读0000000
小端先读0000011

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/674130.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Kubernetes的有状态应用示例:ZooKeeper

文章目录 环境ZooKeeper简介准备部署尝试1尝试2 验证深入了解ZooKeeperleader和follower测试容忍node故障持久化存储 参考 环境 RHEL 9.3Docker Community 24.0.7minikube v1.32.0 ZooKeeper简介 Apache ZooKeeper是一个分布式的开源协调服务,用于分布式系统。Zo…

服务器安装Docker (centOS)

1. 卸载旧版本的Docker(如果有) 首先,如果您的系统上安装了旧版本的Docker,需要将其卸载。Docker的旧版本称为docker或docker-engine。使用以下命令来卸载旧版本: sudo yum remove docker \ docker-client \ docker-…

2024牛客寒假算法基础集训营2部分题解

Tokitsukaze and Bracelet 链接:登录—专业IT笔试面试备考平台_牛客网 来源:牛客网 题目描述 《绯染天空》是一款由 key 社与飞机社共同开发的角色扮演游戏,剧情内容由著名的剧本作家麻枝准编写。它是一款氪金手游,但也有 st…

成为CSDN博客优质创作者或者博客专家吧

成为CSDN博客优质创作者或者博客专家吧 文章目录 成为CSDN博客优质创作者或者博客专家吧一、前言二、如何成为CSDN的博客专家1、2009年的要求和申请方式2、最新的CSDN博客专家要求和申请方式3、创作者身份认证4、CSDN所有认证的介绍 三、写博客的好处1、比较官方的说法&#xf…

Nacos1.X源码解读(待完善)

目录 下载源码 注册服务 客户端注册流程 注册接口API 服务端处理注册请求 设计亮点 服务端流程图 下载源码 1. 克隆git地址到本地 # 下载nacos源码 git clone https://github.com/alibaba/nacos.git 2. 切换分支到1.4.7, maven编译(3.5.1) 3. 找到启动类com.alibaba.na…

波卡 2023 四季度报告:开发者数量位列加密生态前三,五项新技术将于今年发布

作者:Nicholas Garcia|Messari 研究分析师 编译:OneBlock 原文:https://messari.io/report/state-of-polkadot-q4-2023?utm_mediumorganic_social&utm_sourcetwitter_messari&utm_campaignstate_of_polkadot_q4_2023 …

RabbitMQ的延迟队列实现[死信队列](笔记二)

上一篇已经讲述了实现死信队列的rabbitMQ服务配置&#xff0c;可以点击: RabbitMQ的延迟队列实现(笔记一) 目录 搭建一个新的springboot项目模仿订单延迟支付过期操作启动项目进行测试 搭建一个新的springboot项目 1.相关核心依赖如下 <dependency><groupId>org.…

13. UE5 RPG限制Attribute的值的范围以及生成结构体

前面几章&#xff0c;我们实现了通过GameplayEffect对Attribute值的修改&#xff0c;比如血量和蓝量&#xff0c;我们都是有一个最大血量和最大蓝量去限制它的最大值&#xff0c;而且血量和蓝量最小值不会小于零。之前我们是没有实现相关限制的&#xff0c;接下来&#xff0c;我…

小白水平理解面试经典题目LeetCode 71. Simplify Path【Stack类】

71. 简化路径 小白渣翻译 给定一个字符串 path &#xff0c;它是 Unix 风格文件系统中文件或目录的绝对路径&#xff08;以斜杠 ‘/’ 开头&#xff09;&#xff0c;将其转换为简化的规范路径。 在 Unix 风格的文件系统中&#xff0c;句点 ‘.’ 指的是当前目录&#xff0c;…

flutter监听app进入前后台状态的实现

在开发app的过程中&#xff0c;我们经常需要根据app的前后台的状态&#xff0c;做一些事情&#xff0c;那么我们在flutter中是如何实现这一监听的&#xff1f; flutter给我们提供了WidgetsBindingObserver来进行一些状态的判断&#xff0c;但是判断前后台的状态只是该API种其中…

微软.NET6开发的C#特性——接口和属性

我是荔园微风&#xff0c;作为一名在IT界整整25年的老兵&#xff0c;看到不少初学者在学习编程语言的过程中如此的痛苦&#xff0c;我决定做点什么&#xff0c;下面我就重点讲讲微软.NET6开发人员需要知道的C#特性。 C#经历了多年发展&#xff0c; 进行了多次重大创新&#xf…

为什么要设置止损

2024年1月至2月7日&#xff0c;A股最令人瞩目的事件就是代表小微盘的中证500和中证1000雪球连续敲入&#xff0c;以及万得微盘指数的崩塌&#xff08;1个月下跌50%&#xff09;。 这次的这个过程中&#xff0c;止损很重要。一般情况下&#xff0c;如果设置了20%回撤止损的话&am…

Vue-58、Vue技术命名路由

命名路由 1、作用&#xff1a;可以简化路由的跳转 2、如何使用 1、给路由命名&#xff1a;routes:[{name:guanyu,//给路由命名path:/about,component:About},{path:/home,component:Home,children:[{path:news,component:News},{path:message,component:Message,children:[{…

JDK17新特性

JDK 17 是 Java Development Kit 的一个版本&#xff0c;它引入了许多新的特性和改进。以下是 JDK 17 中一些主要的新特性&#xff1a; Sealed classes&#xff1a;此特性允许开发人员限制某个类的子类数量&#xff0c;并且只有在同一个模块中定义的类才能作为其子类。 Patter…

#Js篇:数组的方法es5和es6

数组方法学习 判断一个数组的方法 Array.isArray() javascript内置的方法&#xff0c;用于检测给定的对象是否为数组类型。 早期版本兼容性es5引入&#xff0c;对于不支持es5的老旧浏览器&#xff08;如ie8及更早版本&#xff09;&#xff0c;该方法不可用。 es5实例方法 …

跨品牌智能家居控制_从原理到实现_HomeAssistant

项目地址&#xff1a;https://github.com/home-assistant/core Star&#xff1a;67 K 1 引言 最近去南方玩&#xff0c;住了一些智能酒店&#xff0c;自动开关电视、窗帘、灯、空调&#xff0c;还挺好用的&#xff0c;尤其喜欢关灯这功能。先不说它的理解能力&#xff08;对同…

鸿蒙学习-app.json5配置文件

官网文档参考&#xff1a;https://developer.harmonyos.com/cn/docs/documentation/doc-guides-V3/app-configuration-file-0000001427584584-V3 位于AppScope下的app.json5配置文件 一、基础属性 {"app": {/*包名*/"bundleName": "com.example.dem…

豪掷770亿!华为员工集体“分红大狂欢”:至少14万人受益

豪掷770亿&#xff01;华为员工集体“分红大狂欢”&#xff1a;至少14万人受益 近日&#xff0c;华为宣布了其2023年度分红计划&#xff0c;总金额高达770.85亿元&#xff0c;预计至少将惠及14万员工。这一消息引发了广泛关注和热议&#xff0c;成为业界的一大亮点。作为中国领…

Go 语言中如何大小端字节序?int 转 byte 是如何进行的?

嗨&#xff0c;大家好&#xff01;我是波罗学。 本文是系列文章 Go 技巧第十五篇&#xff0c;系列文章查看&#xff1a;Go 语言技巧。 我们先看这样一个问题&#xff1a;“Go 语言中&#xff0c;将 byte 转换为 int 时是否涉及字节序&#xff08;endianness&#xff09;&#x…

代码随想录算法训练营第42天 | 01背包理论基础 416.分割等和子集

01背包理论基础 问题定义&#xff1a;有n件物品和一个能装重量为w的背包&#xff0c;第i件物品的重量是weight[i]&#xff0c;得到的价值是value[i]。每件物品只能用一次&#xff0c;求解将哪些物品装入背包获得的总价值最大。dp数组含义&#xff1a;dp[i][j] 表示从下标为 [0…