当前位置: 首页 > news >正文

做美容美发的网站有哪些天津市招标投标公共服务平台

做美容美发的网站有哪些,天津市招标投标公共服务平台,短视频分销平台,顺企网哈尔滨网站建设一.概述 1.定义 ABI(Application Binary Interface,应用二进制接口)和 API(Application Programming Interface,应用程序接口)是软件工程中两个核心概念,本质区别在于作用层级与交互对象。 二…

一.概述

1.定义

ABI(Application Binary Interface,应用二进制接口)和 API(Application Programming Interface,应用程序接口)是软件工程中两个核心概念,本质区别在于作用层级与交互对象。

二.关键区别详解

1.作用层级不同

2.变更影响对比

(1)API 变更示例:

// v1.0 API

void process_data(int input);

// v2.0 API (变更参数类型)

void process_data(float input);  // 重新编译即可适配

→ 只需修改调用方代码并重新编译。

(2)ABI 变更示例:

修改结构体字段顺序(影响内存布局):

// v1.0 ABI

struct Point { int x; int y; };  // 内存: [x][y]

// v2.0 ABI (字段顺序变化)

struct Point { int y; int x; };  // 内存: [y][x]

→ 旧版二进制库调用新版结构体将内存解释错误,必须重新编译所有依赖模块。

三.技术要素对比

1.API 包含的要素

函数/方法名称(如 open())

参数类型与顺序(如 int open(const char *path, int flags))

返回值类型(如 ssize_t read(int fd, void *buf, size_t count))

错误处理约定(如返回 -1 表示错误)

2.ABI 包含的要素

(1)调用约定(Calling Convention)

参数传递顺序(寄存器 vs 栈)

返回值存储位置(如 x86: eax;ARM: r0)

栈清理责任方(调用者清理 vs 被调用者清理)

assembly:

; x86_64 System V ABI 示例 (Linux)

; 参数顺序: rdi, rsi, rdx, rcx, r8, r9 → 栈

mov rdi, 123    ; 第一个参数

call function   ; 调用函数

(2)数据表示规范

数据类型大小(如 long 在 Linux x86_64 = 8字节)

结构体/联合体的内存对齐(如 struct { char c; int i; } 对齐到4字节)

字节序(大端/小端)

(3)系统调用机制

系统调用号(如 x86: sys_open 对应 0x05)

陷入内核的方式(如 int 0x80 / syscall)

(4)异常处理

栈回溯格式(DWARF调试信息)

信号处理帧(Signal Frame)结构

四.实际场景示例

1.场景1:Linux 动态库兼容性

API 兼容:

libcurl.so.4 → libcurl.so.5 的函数签名不变,仅内部优化 → 无需重编译应用程序。

ABI 破坏:

libpython3.8.so → libpython3.9.so 修改了 PyObject 结构布局 → Python 3.8 编译的C扩展无法加载到3.9环境。

2.场景2:跨平台开发

API 一致:

使用POSIX API(如 pthread_create)可在Linux/macOS源码级兼容。

ABI 差异:

相同源码在Linux(System V ABI)和Windows(Microsoft ABI)编译后二进制不兼容:

五.总结

1.核心区别与关联

2.关键结论:

API 是开发者之间的契约 → 解决“如何正确调用功能”

ABI 是机器之间的契约 → 解决“如何正确执行指令”

稳定性要求:API 可迭代演进,ABI 必须严格保持兼容,否则引发“DLL Hell”等问题。

http://www.dtcms.com/a/483068.html

相关文章:

  • SpringBoot基于工厂模式的多类型缓存设计
  • Redis中渐进式命令scan详解与使用
  • 江苏省建设厅网站 投诉wordpress页面写文章
  • Redis-主从复制和哨兵模式
  • 推荐一下做年会视频的网站做网站的上市公司
  • 淘宝网站建设论文河北城乡建设学校官方网站
  • 结构一次函数的图像
  • 1032 挖掘机技术哪家强
  • 程序员培训出来到底有没有用徐州seo计费管理
  • git status时发现有未提交的事件提交发现Git 锁文件冲突的问题解决办法
  • 使用 NNCF 量化模型(Python篇)
  • php网站怎么做自适应智慧团建登录入口官方网站
  • 建网站需要什么资质河北智能网站建设
  • 高职示范校建设网站个人网站工商备案
  • 面试-上海电力大学研一的学习经验
  • 理查德西尔斯做的网站做网站发房源综合语录
  • java.lang.ClassNotFoundException: com.microsoft.sqlserver.jdbc.SQLServerDriver
  • 广州中小企业网站建设应用宝下载
  • 影刀 —— 钉钉表格写入
  • 为网站网站做推广彬县网新闻最新消息
  • 汽车芯片:驱动汽车智能进化的“数字发动机”
  • 创建wordpress网站企业域名是什么意思
  • vue实现批量导出二维码到PDF(支持分页生成 PDF)
  • Collections.synchronizedList()详解
  • 做一家仓储用地的网站陕西十二建设有限公司网站
  • 网站有备案号吗天元建设集团有限公司发展历程
  • 网站建设的税收分类编码淘宝店需要多少资金
  • 做网站创业怎么样wordpress 透明背景
  • win10秘钥登录linux问题
  • 丹东建设网官方网站移动云服务器