小编Dav*_*key的帖子

什么是应用程序二进制接口(ABI)?

我从未明白ABI是什么.请不要指向维基百科的文章.如果我能理解它,我就不会在这里张贴这么长的帖子.

这是我对不同界面的看法:

电视遥控器是用户和电视之间的接口.它是一个现有实体,但本身无用(不提供任何功能).遥控器上每个按钮的所有功能都在电视机中实现.

接口:它是间"现有实体"层 functionalityconsumer的该功能.接口本身不起作用.它只是调用后面的功能.

现在取决于用户是谁,有不同类型的接口.

命令行界面(CLI)命令是现有实体,消费者是用户和功能所在.

functionality: 我的软件功能解决了我们描述这个界面的一些目的.

existing entities: 命令

consumer: 用户

图形用户界面(GUI)窗口,按钮等是现有实体,消费者再次是用户和功能所在.

functionality: 我的软件功能解决了我们描述这个界面的一些问题.

existing entities: 窗口,按钮等..

consumer: 用户

应用程序编程接口(API)函数(或更正确的)接口(在基于接口的编程中)是现有实体,这里的消费者是另一个程序而不是用户,并且该层后面的功能也是如此.

functionality: 我的软件功能解决了我们描述这个界面的一些问题.

existing entities: 函数,接口(函数数组).

consumer: 另一个程序/应用程序

应用程序二进制接口(ABI)这是我的问题开始的地方.

functionality: ???

existing entities: ???

consumer: ???

  • 我用不同的语言编写了软件并提供了不同类型的接口(CLI,GUI和API),但我不确定我是否提供过任何ABI.

维基百科说:

ABI涵盖了诸如此类的详细信息

  • 数据类型,大小和对齐方式;
  • 调用约定,它控制函数参数的传递方式并返回检索的值;
  • 系统调用号码以及应用程序应如何向操作系统进行系统调用;

其他ABI标准化细节,如

  • C++名称错误,
  • 异常传播,和
  • 在同一平台上调用编译器之间的约定,但不需要跨平台兼容性.
  • 谁需要这些细节?请不要说操作系统.我知道汇编编程.我知道链接和加载是如何工作的.我确切地知道里面发生了什么.

  • 为什么C++名称输入?我以为我们正在谈二进制.语言为什么会进来?

无论如何,我已经下载了[PDF] System V Application Binary Interface Edition 4.1(1997-03-18),看看它究竟包含了什么.好吧,大部分都没有任何意义.

  • 为什么它包含两章(第4和第5章)来描述ELF文件格式?实际上,这些是该规范中仅有的两个重要章节.其余章节是"处理器特定的".无论如何,我认为这是一个完全不同的话题.请不要说ELF文件格式规范 ABI.根据定义,它不符合接口的条件.

  • 我知道,因为我们谈论的水平很低,所以必须非常具体.但我不确定它是如何"指令集架构(ISA)"具体的?

  • 我在哪里可以找到Microsoft Windows的ABI?

所以,这些是困扰我的主要问题.

compiler-construction api binary operating-system abi

444
推荐指数
11
解决办法
10万
查看次数

采访:Lambda表达是什么?

我最近有两次电话采访.

在两次采访中,我被问到是定义Lambda表达式的最后一个问题.

我声称Lambda表达式是一个未命名的方法来代替委托.但不知何故,这还不够.

我发现在电话采访中很难解释这一点.

有谁知道更好吗?

lambda

44
推荐指数
2
解决办法
5万
查看次数

何时使用 babel.config.js 和 .babelrc

我正在学习 Babel 并想学习如何配置 Babel。我找到了两种配置 Babel 的方法:通过创建 babel.config.js 和 .babelrc 文件。在什么情况下我们应该更喜欢一个配置文件而不是另一个?

babeljs

34
推荐指数
2
解决办法
2万
查看次数

加载共享库时出错:libgbm.so.1:无法打开共享对象文件:AWS EC2 实例上 Nodejs 中的 Puppeteer

我正在使用 Puppeteer 模块通过 Node.js抓取一些数据。它在我的 Macbook 上运行良好,但是当我在 AWS EC2 实例上部署构建并点击正在抓取数据的路线时,它开始抛出错误:

加载共享库时出错:libgbm.so.1:无法打开共享对象文件

javascript amazon-ec2 node.js puppeteer

33
推荐指数
1
解决办法
5万
查看次数

Microsoft Master Data Services - 何时使用?

我想知道是否有人正在使用微软的主数据服务?你是如何利用它的?你觉得它有用吗?当你相信它会有用吗?谢谢!

sql sql-server master-data-services

21
推荐指数
1
解决办法
3198
查看次数

对非共享成员的引用需要在调用public sub时发生对象引用

我有一个Public Class"General",其中是Public Sub"updateDynamics".当我尝试在代码隐藏中引用它时,如下所示:

updateDynamics(get_prospect.dynamicsID)
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

对非共享成员的引用需要对象引用

vb.net object-reference public-method

21
推荐指数
1
解决办法
10万
查看次数

如何在Visual Studio 2008调试器中查看会话变量?

通常使用Visual Studio的调试器是轻而易举的.通过本地扫描可以快速显示变量的值等.但是,我不知道如何找出会话状态变量中包含的值?任何人都可以帮我一把吗?让我们说我之后放了一个断点:

Session("first_name") = "Rob Roy"
如何从本地查看Session("first_name")中包含的值?

asp.net variables debugging session-state visual-studio

18
推荐指数
2
解决办法
3万
查看次数

Visual Studio 2010 Reporting Services项目?

因此,似乎Visual Studio 2010不支持SSRS项目.至少不是旧的..有谁知道这种情况的状态是什么,是否可以使用VS2010创作新的SSRS报告,或者是否应该只使用VS2008 BIDS?

sql-server visual-studio-2010 reporting-services

14
推荐指数
2
解决办法
3万
查看次数

npm 错误 transpileDependencies.map 不是函数

当我尝试运行我的程序时,出现以下错误: 在此输入图像描述

我删除并重新安装了节点,但仍然出现此错误。

node.js npm vue.js

14
推荐指数
1
解决办法
2万
查看次数

将行复制并粘贴到具有不同值的相同SQL表中

我在大学写了一份居民住房申请.在其中一个表(房间)中,我列出了所有房间及其当前/最大入住率.现在,我添加了一个名为"semester"的新列,并将所有现有行设置为具有"fall"的学期值.现在我想将所有这些行复制并粘贴到表中,但是将学期值更改为"spring".结果应该是我开始的行数的两倍 - 一半是学期价值下降,一半是下降.想知道实现这一目标的最佳方法是什么?

sql t-sql sql-server

12
推荐指数
2
解决办法
3万
查看次数