NASM 2行db(初始化数据)似乎不起作用

2024-01-20

我有以下 x86-64 代码,可以在 OSX Yosemite 上运行:

global _main
extern _exit
extern _puts

DEFAULT REL

section .data

putsmsg:    db      'Puts message...',0
another:    db      0

section .text

_main:
    push        rbp
    mov         rbp, rsp

    ; print a string using PUTS
    lea         rdi, [putsmsg]
    call        _puts

    ; call EXIT(0) c function
    mov         rdi, 0
    call        _exit

我按如下方式编译、链接和运行(其中源代码是 a.asm):

nasm -f macho64 a.asm ; gcc a.o -o a.bin ;./a.bin

它不会打印消息“Puts message...”,而如果我只是注释掉包含标签“another”的行,它就会打印该消息。这里出了什么问题?当我有其他初始化的数据行时,为什么它不打印正确的字符串?


使用 yasm 在 GNU/Linux 上为我工作。 (删除后_函数名称的前缀。)

$ yasm -felf64 puts.asm
$ gcc -o put puts.o
$ ./puts
Puts message...

那是第二条数据库线仍然存在:

another:    db      0

在过去的几周内,OS X 上还有一个几乎完全与此问题相关的问题(当字符串后面有更多数据时不会打印一条消息)。该问题的 OP 发现 OS X 上的 yasm 对他有用。也许 OS X 的 nasm 存在错误?

我最终找到了我正在谈论的帖子:位置无关代码指向错误地址 https://stackoverflow.com/q/31640418/224132。请参阅我的答案评论中的讨论。 OP 发现他的代码可以与 yasm 配合使用,但无法判断 nasm 是否存在错误,或者他只是使用错误。

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

NASM 2行db(初始化数据)似乎不起作用 的相关文章

随机推荐

  • 适用于 .net/PowerShell 的良好内存数据库?

    如果我有一个处理稍微复杂一点且可以存储在变量中的状态信息的脚本 那么对于小型内存数据库来说 最佳选择是什么 Sqlite 是一个选项 尽管这将是一个外部依赖项 XML 也可以 尽管它是非关系型的 对于这项工作的工具有什么共识吗 考虑到 Po
  • Linux 64 位 shellcode

    我正在尝试在 Ubuntu 64 位上编写我的第一个 Hello world shellcode 但它不起作用 我有文件你好 asm 64 bit Hello World in Linux NASM global start global
  • 如何下载旧版本的 STS? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我正在寻找下载3 6 0 sts bundle但我找不到执行此操作的地方https spring io
  • 如何用opencv改变饱和度值?

    为了将恒定值添加到每个像素的饱和度值 我在双循环中执行此操作 我想知道是否有更简单 更快的命令来实现这一点 对于我尝试的实验 分割 hsv 值 调整各个通道然后进行合并的替代方法提供了更好的性能 与循环像素相比 下面的方法对我来说要快很多倍
  • 如何轻松地重新排序TabControl?

    我有一个TabControl我在 VS2005 设计器中设计的 大约有 7 个选项卡 如何轻松切换选项卡的顺序 我匆忙地在末尾放了一个标签 但现在我想把它放在中间的某个地方 在选项卡控件的属性中 有一个 TabPages 集合 你应该能够在
  • Wordpress AJAX 调用出现 400 错误请求 [重复]

    这个问题在这里已经有答案了 我正在为 WordPress 网站的前端开发一个搜索插件 目前我不断收到 400 Bad Request 错误 但我不明白为什么 我已经审查了许多关于 SO 和 WordpressStackExchange 的问
  • 如何将图片合并到 WriteableBitmap 中?

    我有一个像这样的位图 var map new WriteableBitmap 800 800 800 800 PixelFormats Bgr32 null 然后我有一个 50x50 png 图片 我想将其合并到此位图 包括透明度 中 位置
  • 创建类似于fb:tag

    我想创建类似于 fb 标签的东西 例如 如果您将 fb comments 放入代码中 它将显示您来自 Facebook 的评论 当然 您需要在 HTML 头中包含 Facebook xmlns 如何创建自己的标签来执行加密等操作 例如
  • 尽管智能感知列出了它,但找不到定义?

    我在 Visual Studio 10 现在也是 11 中遇到了一个奇怪的错误 我有一个扩展方法 public static S Foo
  • 使用包标识符打开应用程序

    是否可以从我们的应用程序中打开应用程序bundle identifier 假设我在第一台设备上安装了两个应用程序com test app1 and com test app2 我可以从我的 app2 中打开 app1 吗 我知道 openU
  • 如何在 pywinauto 中通过正则表达式标题搜索子代/后代?

    我正在尝试通过正则表达式标题获取另一个 UI 元素的子 后代 UI 元素 例如 以下代码应该可以工作 from pywinauto application import Application WindowSpecification roo
  • Android gradle-experimental 0.2.0 添加 res 和 aidl

    我正在努力在 Android Studio 1 3 Gradle 2 5 和 gradle experimental 插件 0 2 0 中使用外部库 因为 NDK 需要这些库 我找到了一些材料here http tools android
  • 使用 AutoLayout 在自定义 UITableViewCell 中使用 Aspect Fill 的 UIImageView

    我一直在努力适应UIImageView显示可变宽度和高度的图像Aspect Fill 单元高度不适应新的高度UIImageView并坚持它的高度 视图的层次结构是这样的 UITableViewCell UITableViewCell Con
  • Firebase 显示成功但未发送云消息(Android - PHP)

    我已经做了很多研究来找出它导致问题的原因 但我仍然无法弄清楚为什么 我可以从控制台发送通知 我可以使用控制台中的令牌向一台设备发送通知 但我无法从 PHP 发送云消息 我还编辑了 build gradle 并添加了给定 firebase 的
  • 如何使用 HABTM 关系在 CakePHP 中查询数据?

    我正在开发 CakePHP 1 2 应用程序 我有一个模型 用户 通过连接表定义了与其他表的一些 HABTM 关系 我现在的任务是根据这些 HABTM 表之一中存储的数据查找用户信息 不幸的是 当查询执行时 我的条件被拒绝 并出现有关缺少表
  • 无法访问 Selenium Webdriver 中的引导模式对话框

    我想要访问打开的模式对话框的内容 并且想要访问按钮 是 否 HTML 代码如下所示 div class modal dialog div class modal content div class modal header div clas
  • 来自字符串字段的 AWS Athena json_extract 查询返回空值

    我在 athena 有一张具有这种结构的表 CREATE EXTERNAL TABLE json test col0 string col1 string col2 string col3 string col4 string ROW FO
  • 完整的数据库模式转换 - 如何测试重写的查询?

    我们的数据库设计得很糟糕 我们继承了它 我已将架构重新设计为可用且可维护的东西 相当多的表和列已被删除 许多列已被移动 并且大多数表和列已被重命名 一些数据类型也已更改 我已经从我们的网络应用程序中提取了所有查询 并开始重写它们 我们认为
  • 特定公共 docker hub 映像的 GKE 映像拉取错误

    我一直在使用 GKE 部署一些公共镜像 例如 redis 和 postgres 但我遇到了一个有趣的问题 它不提取图像 似乎带有特定的标签 我不断收到的错误是 无法拉取镜像 postgres alpine rpc 错误 代码 未知 desc
  • NASM 2行db(初始化数据)似乎不起作用

    我有以下 x86 64 代码 可以在 OSX Yosemite 上运行 global main extern exit extern puts DEFAULT REL section data putsmsg db Puts message