如何从 C 文件中获取完整的汇编代码?

2023-12-28

我目前正在尝试找出从相应的 C 源文件生成等效汇编代码的方法。

我使用 C 语言已经好几年了,但对汇编语言的经验很少。

我能够使用以下命令输出汇编代码-S海湾合作委员会中的选项。然而,生成的汇编代码包含调用指令,这些指令又跳转到另一个函数,例如_exp。这不是我想要的,我需要在单个文件中包含功能齐全的汇编代码,而不依赖于其他代码。

是否有可能实现我想要的目标?

为了更好地描述问题,我在这里向您展示我的代码:

#include <math.h>
float sigmoid(float i){
    return 1/(1+exp(-i));
}

我正在使用的平台是Windows 10 64位,我使用的编译器是MSbuild的cl.exe。

我最初的目标是尽可能了解计算机如何计算数学函数。我决定观察计算过程的级别是汇编代码,我选择的数学函数是上面定义的 sigmoid。


_exp是标准数学库函数double exp(double) http://en.cppreference.com/w/c/numeric/math/exp;显然,您所在的平台在 C 符号名称前添加了前导下划线。

Given a .s调用一些库函数,以与您相同的方式构建它.c调用库函数的文件:

gcc foo.S -o foo  -lm

默认情况下,您将获得动态可执行文件。


但如果你真的想要all将代码放在一个文件中,没有外部依赖项,您可以链接您的.c转换成静态可执行文件并反汇编它。

gcc -O3 -march=native foo.c -o foo -static -lm
objdump -drwC -Mintel foo > foo.s

无法保证_exp实施于libm.a(静态库)与您进入的库相同libm.so or libm.dll或其他什么,因为它是一个不同的文件。对于像这样的函数尤其如此memcpy其中动态链接器技巧通常用于在运行时选择最佳版本(针对您的 CPU)。

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

如何从 C 文件中获取完整的汇编代码? 的相关文章

随机推荐

  • Bukkit 传送 - nullPointerException

    我正在尝试使用以下代码将用户传送到他们自己的领域 EventHandler public static void onPortalTravel PlayerPortalEvent event throws Exception if even
  • 屏幕截图中的模板匹配

    我是 Python 新手 但想学一点 所以我决定创建一个程序 与桌面输入的模板匹配 有人能帮忙吗 如何编写与桌面流匹配的模板 import time import cv2 import mss import numpy template c
  • Webpack:Webpack 内部是如何工作的? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 据我所知 Webpack 是一个用于组织项目中资产的工具 不过 我不明白它内部是如何工作的 看起来有点神奇 是否有某种运行时引擎来解析
  • 可以使用实体框架迁移将 DateTime 字段默认为 GETDATE() 吗?

    我将 EntityFramework Migrations Beta 1 添加到现有的 Code First 应用程序中 该应用程序正在经历一些更改 对于迁移功能以及对我从代码优先 API 生成的表进行更多微调 并遇到 GETDATE 设想
  • Laravel excel 在导入前获取总行数

    直截了当的问题 如何使用 laravel excel 获取电子表格中的总行数 我现在有一个工作计数器 用于记录已处理的行数 在CompanyImport文件 但在开始将行添加到数据库之前我需要总行数 我正在导入的工作表几乎有 100 万行
  • Angular Formly:如何将类添加到包装 div

  • 返回用户的管理员 samaccountname

    我需要创建 AD 中所有活动用户的 CSV 文件 包括直线经理属性 但是我需要直线经理sAMAccountName 不是cn 这是我到目前为止所拥有的 Get ADUser server server ip Filter mail like
  • 如何使用 StaX

    大家好 我是 Java XML 解析领域的新手 我发现 StaX API 可能是我最好的选择 因为我需要读取和写入 XML 文件 好吧 我有一个非常短 应该非常简单 的程序 它 应该 创建一个 XMLInputFactory 并使用它来创建
  • 错误阻止启动:使用 static-html 处理文件时

    错误阻止启动 使用 static html 处理文件时 作为我对流星的介绍 我正在测试分叉包Houston https github com gterrono houston 我运行了以下命令 mkdir tempspace cd temp
  • Python Dask:无法将非有限值(NA 或 inf)转换为整数

    我正在尝试从 postregres 表中捕获一个非常大的结构化表 它大约有 200 000 000 条记录 我在用dask而不是 pandas 因为它更快 当我将数据加载到df它比 pandas 快得多 我正在尝试使用将 dask Data
  • Elasticsearch:组合功能分数

    我对 es 查询的评分为三functions query function score query bool score mode multiply boost mode replace functions f1 f2 f3 所以分数是 f
  • 具有特定 Order By 格式的 SQL 查询 [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我有一个包含以下值的表 OperationCode OperationDesc OperationOrder Repl Remove 1
  • 哪些 .Net Orms 或 MicroOrms 支持异步操作和 PostgreSql

    哪些 ORM 支持异步操作和 postgresql 我更喜欢简单的 MicroOrms 例如 Dapper 和 OrmLite 因为它们似乎具有出色的性能并且非常简单 但据我所知 它们不支持异步操作 也许我错了 但是让所有 IO 绑定操作异
  • 使用 mongoDB 聚合按文本搜索

    我正在尝试对名为的集合进行文本搜索DAFacility在 MongoDB 指南针中 id 62170597b3fa8994a0d9a0c8 author User organizationName TSTT eventName Facili
  • 表达式和变量的 C++ 类型和值类别

    由此link http en cppreference com w cpp language type 它说 对象 引用 函数 包括函数模板特化 和表达式都具有称为类型的属性 因此考虑到以下情况 int rf int 10 我可以说这个变量
  • Django的manage.py显示旧命令

    我正在编写自己的 whl 包 在创建了一些新的管理命令并删除了一些旧的命令后 我对自己非常满意 除了在构建我的轮子包之后 与setup py bdist wheel 并将其安装在我的测试服务器上 使用pip install U projec
  • 更改 Drupal 的主题并保留 Garland 作为管理主题?

    如何在不更改管理主题 站点的 contrib 主题和管理界面的 Garland 的情况下将 contrib 主题应用到 Drupal 6 站点 Thanks 转到管理 gt 站点配置 gt 管理主题 在那里 您可以设置管理主题 如果您想对管
  • 使用 inno setup 卸载默认图标

    我正在使用 Inno setup 将卸载图标添加到 开始 菜单文件夹 using the Inno Setup Script Wizard example My program there is a default uninstall ic
  • 无论锁定状态如何写入锁定文件

    有没有办法写入锁定的文件 无论它打开哪个程序 进程 设想 作为服务运行的商业产品会锁定日志文件 服务不能停止 因为这会影响客户 想在文件末尾插入一行作为标记 出现错误 该进程无法访问该文件 因为该文件正在被另一个进程使用 有什么方法可以在锁
  • 如何从 C 文件中获取完整的汇编代码?

    我目前正在尝试找出从相应的 C 源文件生成等效汇编代码的方法 我使用 C 语言已经好几年了 但对汇编语言的经验很少 我能够使用以下命令输出汇编代码 S海湾合作委员会中的选项 然而 生成的汇编代码包含调用指令 这些指令又跳转到另一个函数 例如