Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >为什么NASM16位模式下的‘`add cx,1234`会产生带有objdump的<unknown>?

为什么NASM16位模式下的‘`add cx,1234`会产生带有objdump的<unknown>?
EN

Stack Overflow用户
提问于 2021-01-29 03:42:23
回答 1查看 36关注 0票数 0

我有这个:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
bits 16
global start
section .text
start:
  add cx, 1234

使用这个Makefile:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
test:
    @nasm -f macho64 test.asm
    @objdump -x86-asm-syntax=intel --full-leading-addr -d test.o
.PHONY: test

它打印:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
% make

test.o: file format Mach-O 64-bit x86-64


Disassembly of section __TEXT,__text:

0000000000000000 start:
      0: 81 c1                          <unknown>
      2: d2 04                          <unknown>

为什么它会生成<unknown>,而不在这里显示指令?我做错什么了吗?我还在学习机器代码的基础知识,如果很明显的话,很抱歉。

它在32位模式下似乎工作得很好:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
bits 32
global start
section .text
start:
  add cx, 1234

输出:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
% make

test.o: file format Mach-O 64-bit x86-64


Disassembly of section __TEXT,__text:

0000000000000000 start:
      0: 66 81 c1 d2 04                 add cx, 1234
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-01-29 04:13:14

64位模式下的操作码81需要更多5个字节(modrm + imm32),但是您的.text段在此之前结束,所以反汇编程序放弃了。如果你用更多的字节填充文本部分(比如times 10 db 0),你会得到一些东西。

您使用bits 16将非64位机器码放入64位目标文件中,因此,您当然应该预料到通常会出现错误。

16位模式的默认操作数大小(16)不同于32和64位模式的默认操作数大小(32),因此66操作数大小前缀与之相反。在32位或64位模式(如add cx, 1234)中需要66前缀的指令要求在16位模式中不存在该前缀。(正如您上一个问题的@fuz's answer中所述)

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65948483

复制
相关文章
为什么HashMap会产生死循环?
HashMap死循环是一个比较常见、也是比较经典的面试题,在大厂的面试中也经常被问到。HashMap的死循环问题只在JDK1.7版本中会出现,主要是HashMap自身的工作机制,再加上并发操作,从而导致出现死循环。JDK1.8以后,官方彻底解决了这个问题。
Tom弹架构
2022/08/22
1.5K0
为什么HashMap会产生死循环?
Android下使用objdump查看导出的函数表
这里推荐第二种方法, 因为遇到问题相对好查,nm在google里稍难匹配到你要的意思。
望天
2019/08/01
4.5K0
解决简单恢复模式下产生的日志增长
简介   最近测试服务器进行数据归档,其间程序员发现一个问题,空间不足,我查看原因发现日志文件暴涨。然后将数据库改为简单恢复模式,但是依然存在这个问题。经过查询资料发现了日志文件在简单模式下依然增加的原因。 Simple概念   Simple恢复模式也叫做”Checkpoint with truncate log“,其实这个名字更形象,在Simple模式下,SQL Server会在每次checkpoint或backup之后自动截断log,也就是丢弃所有的闲置日志记录,仅保留用于实例启动时自动发生的insta
用户1217611
2018/01/30
1.1K0
解决简单恢复模式下产生的日志增长
为什么网站中的CSS或JS会带有v或version参数
在查看网页源码的时候经常会发现带有类似 ?v=13566 或者 ?version=15678 的 CSS 和 JS 文件。如下所示: <script src="w3h5.js?version=1568
德顺
2019/11/13
4.3K0
为什么网站中的CSS或JS会带有v或version参数
Elasticsearch 为什么会产生文档版本冲突?如何避免?
模拟脚本2:循环update_by_query 批量更新数据 update.sh。
铭毅天下
2022/09/26
4.1K0
Elasticsearch 为什么会产生文档版本冲突?如何避免?
Linux下Shellcode编写
基本过程是首先使用汇编通过系统调用的方式实现程序功能,编译成可执行文件,然后使用 objdump 进行机器码提取
yichen
2022/01/06
2.3K0
linux objdump命令,Linux objdump命令
—恢复内容开始— objdump命令是Linux下的反汇编目标文件或者可执行文件的命令,它还有其他作用,下面以ELF格式可执行文件test为例详细介绍: objdump -f test 显示t …
全栈程序员站长
2022/11/15
28.4K0
L1正则为什么会产生稀疏解
在机器学习中,当模型过于复杂时,为了防止产生过拟合的现象,最常用的方法时采用正则化,如L1正则和L2正则.
JNJYan
2019/01/18
1.9K0
你的MySQL为什么会"抖"一下?
在现实工作中,偶尔能碰到执行SQL语句的时候突然卡一下,这样的场景不容复现,但是出现的时候确实让人奇怪,今天我们就来看这个情况可能产生的场景。
AsiaYe
2020/05/18
1K0
因《设计模式》产生的误解[《软件方法》节选]
从图8-108可以看到,泛化、关联和依赖在一个抽象级别,普通关联、聚合和组合在一个抽象级别。
用户6288414
2022/04/09
1820
因《设计模式》产生的误解[《软件方法》节选]
输出1234无重复三位数
有1,2,3,4四个数字求四个数字能生成多少个互不相同且无重复数字的三位数(不能含有122,133类似)
算法与编程之美
2021/12/15
6310
什么情况下 Java 程序会产生死锁?
死锁是一种特定的程序状态,在实体之间,由于循环依赖导致彼此一直处于等待之中,没有任何个体可以继续前进。死锁不仅仅是在线程之间会发生,存在资源独占的进程之间同样也可能出现死锁。通常来说,我们大多是聚焦在多线程场景中的死锁,指两个或多个线程之间,由于互相持有对方需要的锁,而永久处于阻塞的状态。
葆宁
2019/04/18
7210
什么情况下 Java 程序会产生死锁?
Tool之objdump
objdump是GNU里的一个工具,用于查看对象文件的信息,直接贴一段手册吧,具体的使用得自己去实践了
Taishan3721
2021/07/23
8670
Tool之objdump
objdump命令解析
objdump命令是Linux下的反汇编目标文件或者可执行文件的命令,它以一种可阅读的格式让你更多地了解二进制文件可能带有的附加信息。
用户5807183
2019/08/28
4.7K0
objdump命令解析
go tool objdump
1.用go tool objdump,可以看到任意函数的机器码、汇编指令、偏移。(go源码下面有一个cmd/internal/goobj包,可以读到.o文件的重定向信息,更好。)
golangLeetcode
2022/08/02
1.1K0
为什么MySQL会抖一下?
当内存数据页跟磁盘数据页内容不一致的时候,我们称这个内存页为“脏页”。内存数据写入到磁盘后,内存和磁盘上的数据页的内容就一致了,称为“干净页”。
只喝牛奶的杀手
2023/03/10
5270
为什么MySQL会抖一下?
64位下的InlineHook
关于64位程序.网上HOOK方法一大堆.这里也记录一下. 了解跨平台HOOK的真相与本质.
IBinary
2019/08/14
1.7K1
微信指数会产生什么样的影响
昨晚,微信悄悄上线了“微信指数”。据介绍,微信指数是微信官方提供的基于微信大数据分析的移动端指数。简单来说,就是可以查询某个关键词在微信里面的热度了。微信指数的推出,对于公众号、品牌主、广告服务商,都有一定的影响: ①对于公众号来说,可以了解自己的热度,也可以及时追踪热点。通过该功能,公众号可以通过搜索自身公众号以及同类型的公众号指数,判断自己在同行中大概处于什么位置。 同时,公众号也可以迅速了解微信的热点话题,根据热点适当地调整选题与标题,提高阅读量。 ②对于对品牌方来说:可以了解品牌的影响力,并更好地评
ytkah
2018/03/06
9000
Mysql为什么会抖一下呢
在之前我们说过酒店记账的故事,其中酒店掌柜记账的的黑板就类似我们的redo log,而掌柜的记账本就是数据文件,掌柜的记忆就是内存。
小土豆Yuki
2020/09/08
5370
Nginx之Windows下Nginx下带有https的图片路径搭建
今天玩个高端的 由于生产环境的图片地址 https://www.cginx.com/images/20190423094936_885186.jpg 是这个 我在本地环境的项目无法显示图片 于是想着在windows环境下搭建个Nginx 来显示图片
周杰伦本人
2023/10/12
6690
Nginx之Windows下Nginx下带有https的图片路径搭建

相似问题

带有调试信息的二进制文件的objdump会产生错误的输出。

11

为什么这个带有内存的MOV和ADD序列会产生AX=90FFh?

124

为什么代码会产生400错误,但在调试模式下运行?

14

在docker下运行objdump会显示不同的结果。

18

屏蔽上位或下4位会产生相同的图像。

10
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文