什么是 Irvine32 库以及我们为什么使用它?

2023-12-05

我想知道Irvine32汇编语言库是什么。

我想要一个定义以及我们为什么使用这个库。


我想知道汇编语言中的 Irvine32 库是什么。

Irvine32 库是有用函数的集合,您可以查看在线文档了解它们的列表和更多详细信息。

我想要一个防御以及为什么我们使用这个库?

我不知道为什么you use it.

通常人们希望使用它来避免自己编写提供该功能的代码。由于复制某些功能的汇编代码可能是数十行或数百行代码(对于非常复杂的功能甚至数千行代码),并且每次都编写它可能会很麻烦。

此外,Irvine32 函数提供的 API 通常比操作系统服务提供的类似 API 更易于使用,因此使用 Irvine32 代替直接调用操作系统服务通常会更简单。

It also provides library functions that read and print integers (like WriteDec), which there's no system call for. So it's like a simplified C library printf. And ReadDec returns a value in EAX, and success/fail in FLAGS (CF), while C library scanf requires you to pass a pointer where the result will be stored1.

它是为初学者和简单的程序而设计的,而不是为了效率。例如,Irvine32 使用自己的调用约定,没有调用破坏寄存器,因此您可以在循环内打印内容,而不必考虑将循环计数器保留在它不会执行的寄存器中。


脚注 1:因为 scanf 可以在一次调用中执行多次转换,并且因为 C 不能同时返回整数和标志作为两个单独的返回值。在 CF 中以成功/失败的方式返回寄存器中的值通常只有 asm 调用约定才能使用。不过,这并不是 Irvine32 独有的。例如,Mac OS 系统调用就是这样做的。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

什么是 Irvine32 库以及我们为什么使用它? 的相关文章

  • 使用`esp*scale 时寻址内存时出错

    内存寻址一般形式 发现了here https stuff mit edu afs athena project rhel doc OldFiles 3 rhel as en 3 i386 memory html is base index
  • MAC-1 汇编递归

    如何在 MAC 1 汇编器中调用递归函数 在 C 中你会做类似的事情 int func int num if num 0 return 1 return num func num 1 我知道如何使用调用函数 CALL 以及如何将参数加载到堆
  • 使用 XCHG 解锁的自旋锁

    维基百科提供的使用 x86 XCHG 命令的自旋锁的示例实现是 Intel syntax locked The lock variable 1 locked 0 unlocked dd 0 spin lock mov eax 1 Set t
  • 如果我有一个 8 位值,那么使用 8 位寄存器而不是 16、32 或 64 位寄存器有什么优势吗?

    我读到的 x86 asm 介绍性文献似乎在所有实际场景中都坚持使用 32 位寄存器 eax ebx 等 除了证明 64 位寄存器也存在之外 如果确实提到 16 位寄存器 那也是作为历史注释来解释为什么 32 位寄存器的名称前面有一个 e 编
  • 用于计算三角函数、对数或类似函数的算法。仅限加减法

    我正在修复 Ascota 170 古董机械可编程计算机 它已经开始工作了 现在我正在寻找一种算法来展示其功能 例如计算三角或对数表 或类似的东西 不幸的是 从数学运算来看 计算机只能进行整数的加减法 从 1E12到1E12的55个寄存器 甚
  • 段错误...关于你好世界

    这段代码非常简单 但我在 x86 64 Linux 系统上遇到了段错误 这让我很烦恼 刚开始接触asm 请耐心等待 与 NASM 组装nasm f elf64 test asm 与连接ld o test test o SECTION tex
  • 与 SSE 比较 16 字节字符串

    我有 16 字节的 字符串 它们可能更短 但您可能会假设它们在末尾用零填充 但您可能不会假设它们是 16 字节对齐的 至少不总是 如何编写一个例程将它们与 SSE 内在函数进行比较 是否相等 我发现这个代码片段可能会有帮助 但我不确定它是否
  • 为什么 x86-64 上的 GCC 在函数内插入 NOP?

    给定以下 C 函数 void go char data char name 64 strcpy name data x86 64 上的 GCC 5 和 6 编译 普通gcc c g o其次是objdump 这到 00000000000000
  • 如何在 MOS 6502 的 asm 中创建延迟

    我是 ASM 新手 我正在尝试研究如何为以下代码创建延迟 org 1000 loop inc d021 jmp loop 我想评论已经足够清楚了 每帧更改颜色的代码示例 1 50 秒 sei enable interrupts loop1
  • _addcarry_u64 和 _addcarryx_u64 与 MSVC 和 ICC

    MSVC 和 ICC 都支持内在函数 addcarry u64 and addcarryx u64 根据英特尔的内在指南 https software intel com sites landingpage IntrinsicsGuide
  • 使用 GNU C 内联汇编在 VGA 内存中绘制字符

    我正在学习使用 C 和内联汇编在 DOS 中进行一些低级 VGA 编程 现在我正在尝试创建一个在屏幕上打印出字符的函数 这是我的代码 This is the characters BITMAPS uint8 t characters 464
  • Visual Studio:如何正确构建和指定 x64 和 x86 的配置和平台

    使用 Visual Studio 2012 Professional 和 Ultimate 以及所有最新更新 如何正确指定配置和平台以正确构建 x86 和 x64 当您第一次创建 Winforms 应用程序时 Visual Studio 会
  • 如何从内存加载值而不污染缓存?

    我想读取内存位置而不污染缓存 我正在 X86 Linux 机器上工作 我尝试使用 MOVNTDQA 汇编指令 asm movntdqa source dest n t dest x my var source m my mem 0 memo
  • 将 AT&T 语法转换为 INTEL 语法

    我发现这个 GAS 文件包含一些可以从 CD 启动的引导加载程序代码 我想研究它并尝试制作我自己的一个 但唯一的问题是它采用 AT T 语法而不是 Intel 语法 我对 AT T 语法一无所知 我尝试过使用 Intel2gas 转换器 但
  • 使用非规范地址检索内存数据会导致 SIGSEGV 而不是 SIGBUS

    我无法使用以下汇编代码产生 总线错误 这里我使用的内存地址不是合法的 规范地址 那么 我怎样才能触发该错误呢 我在带有 NASM 2 14 02 的 Ubuntu 20 04 LTS 下运行这段代码 但它会导致负载出现 SIGSEGV 分段
  • 函数地址不是实际代码地址

    在 Visual Studio 2008 C 中调试一些代码时 我注意到函数指针变量中的地址不是函数本身的实际地址 这是一个外部 C 函数 int main void printaddr const char print debug sho
  • x86 asm 的 NASM 语法中的括号是什么意思?

    给出以下代码 L1 db word 0 mov al L1 mov eax L1 括号里是什么意思 L1 代表 这个问题专门针对 NASM Intel 语法汇编的另一个主要风格是 MASM 风格 当不涉及寄存器时 括号的工作方式有所不同 S
  • Intel 上的 gcc 中的 _mm_pause 用法

    我参考过这个网页 https software intel com en us articles benefitting power and performance sleep loops https software intel com
  • 如何在 x86 ASM 中将整数转换为浮点值?

    我需要将一个整数 二进制补码 乘以一个浮点常数 这是我所拥有的 data pi dd 3 14 int dd 0ah code fld pi fmul ST 1 ST 我怎样才能转换int乘以浮点值pi 你需要fild操作说明 这是一个参考
  • Nasm 点状标签

    我对 TASM 很熟悉 但对 NASM 不太了解 我读过 NASM 允许使用本地标签 这些标签在名称前用点表示 例如 代码 loop some code jmp loop 定义一个名为 loop的局部标号 引用的地址在后面的jmp指令中使用

随机推荐

  • Java if/else 行为异常

    我是一个真正的java新手 所以如果这是一个无可救药的简单问题 请原谅我 我的 java 游戏服务器有以下内容 Get input from the client DataInputStream in new DataInputStream
  • 如何始终将 PopUp 放置在 WPF 中的 ToggleButton 下

    我想在单击切换按钮时在其下方放置一个弹出窗口 在此弹出窗口中 我想添加按钮和其他控件 但是 当我调整主窗口大小时 如何确保弹出窗口始终位于切换按钮下方 我的 XAML 代码
  • 在 ARM 模板中定义时未应用 Azure 服务总线筛选器

    我在下面定义了一个 ARM 模板片段 它创建服务总线主题 订阅和规则 过滤器 该规则与主题和订阅一起应用 但过滤器的值为 1 1 为什么不应用该表达式 apiVersion 2017 04 01 name concat parameters
  • 在 Unix 环境中检测过时的 pid 文件

    在 Unix 环境中检测陈旧 pid 文件的标准 跨平台方法是什么 假设我想终止应用程序的旧实例 但如果该应用程序已经退出 我当然不想破坏具有相同 PID 的不相关进程 现在我找到了一种在我的 Ubuntu 也可能是其他基于 GNU Lin
  • 如何从 JPanel 中的操作交换 JPanel

    我是 Java Swing 的新手 但我一直无法找到一个优雅的解决方案来解决我的问题 所以我想我应该在这里提出一个问题 我试图根据当前 JPanel 中的按钮单击事件将当前 JPanel 更改为另一个 JPanel 本质上只是隐藏一个面板并
  • 角度怪异:一个对象属性如何更改两个不同对象上的属性?

    我正在使用 Angularjs 构建一个网站 其中有一个对象列表 scope fieldsToShow fields type LOGGED IN fields type PERSONAL user 2 name Rick Astley 然
  • 我不知道为什么这个 static_assert() 代码不起作用

    这是代码 pragma once include
  • 在classpath中打印spring.xml的路径

    我在测试类中使用以下代码来加载类路径和 application content xml 文件中的所有 spring xml 文件 Override protected String getConfigLocations return new
  • 在 Mongo 2.6 和 Pymongo 2.7.1 上使用 maxTimeMS 参数进行聚合查询

    我无法在 Mongo 2 6 和 Pymongo 2 7 1 中使用 maxTimeMS 参数 根据本页的文档官方 Mongodb 聚合页面聚合方法应该返回一个Cursor目的 但是 当我在本地运行查询时mongod实例 2 6 pymon
  • AWS-CDK:有什么方法可以通过输入参数传递vpc cidr?

    我正在尝试将 vpc cidr 作为输入参数传递 如下所示 import Stack StackProps Construct CfnParameter from aws cdk core import Vpc SubnetType fro
  • 现有的 DAO 代码可以在 SQL Server 上运行吗?

    如果我将数据从 Access MDB 传输到 SQL Server VB 应用程序中的 DAO 代码是否会针对 SQL Server 工作 我意识到需要对初始连接调用进行更改 但还有其他需要更改的地方吗 这里有很多问题 如果您使用 ADP
  • 如何为每个页面调用一个方法?

    我正在使用 Spring MVC 编写一个应用程序 我有一个从数据库返回值的方法 我想在网站的标题中显示这些值 显示在所有页面上 我怎样才能做到这一点 我需要在每个控制器中调用这个方法 声明一个类 ControllerAdvice注解 然后
  • 通过 TCP 读取嗅探数据

    我正在开发一个应用程序 该应用程序正在侦听传入电脑的数据并将其存储在数据库中 当我尝试使用任何嗅探软件时 它会解码数据并且我可以读取它 但在我的代码中 我根本无法阅读它 它的格式是这样的 18222621516223418171188155
  • Hibernate:有第三级缓存吗?

    在一次求职面试中 一位招聘人员问我 hibernate 中有多少级缓存 所以我描述了1级和2级 他说正确 但还有第三级缓存 例如缓存一些不经常更改的表的结果 如 CURRENCY 或 COUNTRY 并在每个 12 24 您想要的时间 小时
  • 使用纯 JavaScript 获取点击元素的索引

    我需要知道单击元素的索引 不知道该怎么做 for i 0 i lt document getElementById my div children length i document getElementById my div childr
  • 将训练数据拆分为每个类的相同行数

    我有一个非常大的数据集 大约有 314554097 行和 3 列 第三列是班级 该数据集有两个类 0 和 1 我需要将数据分为测试数据和训练数据 要分割我可以使用的数据 from sklearn cross validation impor
  • 处理 contentEditable DIV 上的换行符

    我有一个问题contenteditableSAFARI CHROME 上的换行符 当我在 contentEditable 上按 返回 时 div 而不是创建一个 br 如 Firefox 他们创建了一个新的 div div Somethin
  • PostgreSQL 在触发器函数中动态修改新记录中的字段

    我有一个包含 ID 和用户名 以及其他详细信息 的用户表 以及引用该表的其他几个表 其中包含各种列名称 CONSTRAINT some name FOREIGN KEY columnname REFERENCES user userid 我
  • 在 OpenCV 中复制像素值

    我有 RGB 图像 例如尺寸为 2x2 如下 0 14 255 75 156 255 45 255 234 236 141 255 我想将每个像素 所有 RGB 通道 复制 2x2 次并获得如下所示的图像 0 14 255 0 14 255
  • 什么是 Irvine32 库以及我们为什么使用它?

    我想知道Irvine32汇编语言库是什么 我想要一个定义以及我们为什么使用这个库 我想知道汇编语言中的 Irvine32 库是什么 Irvine32 库是有用函数的集合 您可以查看在线文档了解它们的列表和更多详细信息 我想要一个防御以及为什