无需内联汇编即可访问标志?

2023-12-08

我在 C 中有以下方法,它需要两个 16 位短整型:

  • 将两个整数相加
  • 如果设置了进位标志,则结果加 1
  • 对最终结果中的所有位取反(NOT)
  • 返回结果:

    short __declspec(naked) getchecksum(short s1, short s2)
    {
        __asm
        {
            mov ax, word ptr [esp+4]
            mov bx, word ptr [esp+8]
            add ax, bx
            jnc skip_add
            add ax, 1
            skip_add:
            not ax      
            ret
        }
    }
    

我必须在内联汇编中编写此内容,因为我不知道有什么方法可以在不使用汇编器的情况下测试进位标志。有谁知道有什么方法可以做到这一点?


不(C 根本没有标志的概念)但这并不意味着您不能得到相同的结果。如果用32位整数做加法,第17位是进位。所以你可以这样写:

uint16_t getchecksum(uint16_t s1, uint16_t s2)
{
    uint32_t u1 = s1, u2 = s2;
    uint32_t sum = u1 + u2;
    sum += sum >> 16;
    return ~sum;
}

为了防止出现麻烦,我已将类型设为未签名。这在您的平台上可能没有必要。

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

无需内联汇编即可访问标志? 的相关文章

  • WPF DataGrid 多选

    我读过几篇关于这个主题的文章 但很多都是来自 VS 或框架的早期版本 我想做的是从 dataGrid 中选择多行并将这些行返回到绑定的可观察集合中 我尝试创建一个属性 类型 并将其添加到可观察集合中 它适用于单个记录 但代码永远不会触发多个
  • 调用 McAfee 病毒扫描引擎

    我收到客户的请求 要求使用他们服务器上的 McAfee 病毒扫描将病毒扫描集成到应用程序中 我做了一些调查 发现 McScan32 dll 是主要的扫描引擎 它导出各种看起来有用的函数 我还发现提到了 McAfee Scan Engine
  • 根据属性的类型使用文本框或复选框

    如果我有这样的结构 public class Parent public string Name get set public List
  • std::list 线程push_back、front、pop_front

    std list 线程安全吗 我假设不是这样 所以我添加了自己的同步机制 我认为我有正确的术语 但我仍然遇到问题 每个函数都由单独的线程调用 Thread1 不能等待 它必须尽可能快 std list
  • 如何在 C# 中打开 Internet Explorer 属性窗口

    我正在开发一个 Windows 应用程序 我必须向用户提供一种通过打开 IE 设置窗口来更改代理设置的方法 Google Chrome 使用相同的方法 当您尝试更改 Chrome 中的代理设置时 它将打开 Internet Explorer
  • free 和 malloc 在 C 中如何工作?

    我试图弄清楚如果我尝试 从中间 释放指针会发生什么 例如 看下面的代码 char ptr char malloc 10 sizeof char for char i 0 i lt 10 i ptr i i 10 ptr ptr ptr pt
  • 如何在 C++ 中标记字符串?

    Java有一个方便的分割方法 String str The quick brown fox String results str split 在 C 中是否有一种简单的方法可以做到这一点 The 增强分词器 http www boost o
  • 无限循环与无限递归。两者都是未定义的吗?

    无副作用的无限循环是未定义的行为 看here https coliru stacked crooked com view id 24e0a58778f67cd4举个例子参考参数 https en cppreference com w cpp
  • C++ 多行字符串原始文字[重复]

    这个问题在这里已经有答案了 我们可以像这样定义一个多行字符串 const char text1 part 1 part 2 part 3 part 4 const char text2 part 1 part 2 part 3 part 4
  • 人脸 API DetectAsync 错误

    我想创建一个简单的程序来使用 Microsoft Azure Face API 和 Visual Studio 2015 检测人脸 遵循 https social technet microsoft com wiki contents ar
  • C# - 当代表执行异步任务时,我仍然需要 System.Threading 吗?

    由于我可以使用委托执行异步操作 我怀疑在我的应用程序中使用 System Threading 的机会很小 是否存在我无法避免 System Threading 的基本情况 只是我正处于学习阶段 例子 class Program public
  • 如何定义一个可结构化绑定的对象的概念?

    我想定义一个concept可以检测类型是否T can be 结构化绑定 or not template
  • 为什么 C# 2.0 之后没有 ISO 或 ECMA 标准化?

    我已经开始学习 C 并正在寻找标准规范 但发现大于 2 0 的 C 版本并未由 ISO 或 ECMA 标准化 或者是我从 Wikipedia 收集到的 这有什么原因吗 因为编写 审查 验证 发布 处理反馈 修订 重新发布等复杂的规范文档需要
  • C 编程:带有数组的函数

    我正在尝试编写一个函数 该函数查找行为 4 列为 4 的二维数组中的最大值 其中二维数组填充有用户输入 我知道我的主要错误是函数中的数组 但我不确定它是什么 如果有人能够找到我出错的地方而不是编写新代码 我将不胜感激 除非我刚去南方 我的尝
  • 为什么使用小于 32 位的整数?

    我总是喜欢使用最小尺寸的变量 这样效果就很好 但是如果我使用短字节整数而不是整数 并且内存是 32 位字可寻址 这真的会给我带来好处吗 编译器是否会做一些事情来增强内存使用 对于局部变量 它可能没有多大意义 但是在具有数千甚至数百万项的结构
  • C 函数 time() 如何处理秒的小数部分?

    The time 函数将返回自 1970 年以来的秒数 我想知道它如何对返回的秒数进行舍入 例如 对于100 4s 它会返回100还是101 有明确的定义吗 ISO C标准没有说太多 它只说time 回报 该实现对当前日历时间的最佳近似 结
  • 对于某些 PDF 文件,LoadIFilter() 返回 -2147467259

    我正在尝试使用 Adob e IFilter 搜索 PDF 文件 我的代码是用 C 编写的 我使用 p invoke 来获取 IFilter 的实例 DllImport query dll SetLastError true CharSet
  • 在OpenGL中,我可以在坐标(5, 5)处精确地绘制一个像素吗?

    我所说的 5 5 正是指第五行第五列 我发现使用屏幕坐标来绘制东西非常困难 OpenGL 中的所有坐标都是相对的 通常范围从 1 0 到 1 0 为什么阻止程序员使用屏幕坐标 窗口坐标如此严重 最简单的方法可能是通过以下方式设置投影以匹配渲
  • 如何确定 CultureInfo 实例是否支持拉丁字符

    是否可以确定是否CultureInfo http msdn microsoft com en us library system globalization cultureinfo aspx我正在使用的实例是否基于拉丁字符集 我相信你可以使
  • 使用 WGL 创建现代 OpenGL 上下文?

    我正在尝试使用 Windows 函数创建 OpenGL 上下文 现代版本 基本上代码就是 创建窗口类 注册班级 创建一个窗口 choose PIXELFORMATDESCRIPTOR并设置它 创建旧版 OpenGL 上下文 使上下文成为当前

随机推荐

  • KSQL 表-表左外连接多次发出相同的连接结果

    使用 KSQL 并执行左外连接 我可以看到有时多次发出的连接结果 换句话说 相同的连接结果会被多次发出 我不是在谈论右侧具有空值的联接版本和不具有空值的版本 从字面上看 连接产生的同一条记录会被多次发出 我想知道这是否是预期的行为 一般答案
  • 如何在 Flutter 中嵌套 StreamBuilder?

    我有 2 个流 需要组合起来构建一个小部件 但与我见过的其他问题不同 我需要嵌套流 我有一个从 Firestore 获取文档集合的流 以及一个依赖于第一个文档的数据来获取文档子集合的流 我想将它们组合成一个流 但它们需要嵌套 因为每个文档都
  • 通过传递引用或返回引用来初始化结构是更好的方式吗?

    假设我有以下内容 typedef struct int x int y char a char b myStruct 创建一个新的更好的做法吗 myStruct通过传递对空函数的引用或返回一个函数来使用函数myStruct来自函数 void
  • 正则表达式在特定位置添加空格

    我有一个 14 位长的号码 需要将其拆分成以下格式 xxx xxx xxx xxxxx 我有一个正则表达式 它从末尾开始分割每 3 个字符 因为前瞻 d 3 d 这给了我 xx xxx xxx xxx xxx 我尝试在 regex101 c
  • 在 R 的行组中向前和向后进行最后一个因子观察

    假设我的数据集看起来像 ID Name 1 JAY 1 1 JAY 2 LAY 2 LAY 2 3 NA 3 KAY 3 我想根据组中已有的观察结果用缺失值 空或 NA 填充行 所以结果数据框看起来像 ID Name 1 JAY 1 JAY
  • 无法移出定义“Drop”特征的类型 [E0509]

    我使用以下 Rust 代码Rust Postgres打算在我的结构超出范围后提交事务 struct SqlTransaction lt a gt connection a Connection transaction Transaction
  • 使用 OpenGL 进行快速调色板屏幕块传输

    游戏使用软件渲染在内存中绘制全屏调色板 8 位 图像 使用 OpenGL 将图像显示在屏幕上的最快方法是什么 我尝试过的事情 glDrawPixels with glPixelMap指定调色板 并让 OpenGL 进行调色板映射 性能非常糟
  • HttpRuntime.Cache 在哪里存储数据?

    我正在尝试实现一个具有缓存功能的 Web 应用程序 我需要缓存的原因是我们有一个允许用户访问在线课程的应用程序 现在 一旦用户登录 我就会根据我们的数据库对其进行验证 一旦验证 我想将用户 ID 和课程 ID 在缓存中存储 20 分钟 这样
  • Safari XHR 上传卡住(有时)

    我使用构建上传脚本jquery 文件上传 现在我有一个奇怪的行为 上传时不时地卡住 假设每八次 这只发生在 Safari 5 0 5 中 其他浏览器工作正常 我可以确认这与服务器无关 该问题发生在执行任何服务器脚本之前 有时上传卡在 2 有
  • 来自命令行的 Sublime Text

    我安装了 Sublime Text 并想知道如何打开rb从终端获取其中的文件 我看见让 Sublime Text 成为我的核心编辑器的命令是什么 我发现我可以将 Sublime 作为我的核心编辑器 但我希望能够输入 sublime file
  • 在Python中存储布尔值以节省内存的最佳方法

    在字典 如由长数字索引的集合 中存储一百万到 450 000 个布尔值的最佳方法是什么 我需要使用尽可能少的内存 True 和 Int 每个条目都占用超过 22 个字节 每个布尔值的内存是否可能较低 Check 这个问题 Bitarray似
  • 将子文件夹重定向到根目录并将其隐藏在 url 中

    我已经成功地从目录中 重新设置 根目录 以便将公共文件与配置 帮助程序和控制器分开 这要归功于这个答案 and 这个答案 但是我意识到如果用户输入http domain com public它不会重定向到http domain com这对
  • 当 float 指针类型转换为 char 指针时会发生什么?

    int main float f 12 2 char p1 p1 char f printf d p1 输出 51 You can cast a float to a char 很好 就是using这样的野兽可能会有问题 当您取消引用它时
  • Struts 2 中的下拉菜单

    我有一张带有键值对的地图 我想在下拉列表中显示键 并将值发送到服务器以识别所选内容 我使用的是Struts2 我尝试把Map in
  • 使用过滤器更改 UITextView 链接的颜色?

    UITextView 上检测到的链接始终为蓝色 没有办法直接改变这一点 但是我可以叠加某种将蓝色变为红色的滤镜吗 实际上有一种方法可以做到这一点使用私有 API A UITextView有一个 单个 类子视图UIWebDocumentVie
  • 如何比较两个 char[] 数组是否相等?

    现在我有两个char数组 foo1 and foo2 当我将它们转换为字符串并输出到控制台时 它们都显示为bar 我知道我可以做这样的事情 int g for int i 0 i
  • 如何添加到 ASP.NET HttpRequest 客户端可用的密码套件?

    当我的 ASP NET 网站在 Windows 7 机器上运行时 它可以很好地连接 以编程方式作为 客户端 到另一台 Windows 7 计算机上的 SSL 加密服务 服务器 但如果我的网站位于生产环境 Windows Server 200
  • htaccess和重写

    我刚刚在我的网站上创建了一个子域 主要是因为我想要一个特定的地址 可以说我的网站是 http website com我的子域是http sub website com其主文件夹位于 home username public html sub
  • 在 C# 中将像素数组转换为图像

    我有一个数组int我的 C 程序中存在像素 我想将其转换为图像 问题是我正在将程序的 Java 源代码转换为等效的 C 代码 在java中 该行读取将int像素数组显示到图像中 Image output createImage new Me
  • 无需内联汇编即可访问标志?

    我在 C 中有以下方法 它需要两个 16 位短整型 将两个整数相加 如果设置了进位标志 则结果加 1 对最终结果中的所有位取反 NOT 返回结果 short declspec naked getchecksum short s1 short