无法调整尺寸指令

2024-03-24

我想知道为什么有些汇编指令可以推断,但其他的则不能。例如,在以下程序中我有:

.globl main
main:
    push %rbp
    mov %rsp, %rbp
    mov $8, -8(%rbp)
    mov -8(%rbp), %rax
    pop %rbp
    ret

我收到以下错误:

stack.s:5: 错误:没有给出指令助记符后缀,也没有寄存器操作数;无法调整尺寸指令

但是,如果我将:第五行更改为:

movq $8, -8(%rbp)

它运行没有错误。所有其他操作如何推断出大小,而该特定指令却不能?


提示在消息中:“无寄存器操作数”。

所有其他指令都有一个寄存器作为操作数,并且汇编器知道寄存器有多大。例如,mov %rax, -8(%rbp)必须是四字移动(8 个字节),因为%rax是一个64位寄存器。同样地,mov %eax, -8(%rbp), mov %ax, -8(%rbp), and mov %al, -8(%rbp)将是长字/字/字节移动(4/2/1 字节)。因此,这些指令的尺寸后缀是可选的。

但立即常数$8没有固有的大小,因此汇编程序无法知道您想要的大小,除非您告诉它。

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

无法调整尺寸指令 的相关文章

  • 使用 gdb 在指定的可执行文件之外单步执行汇编代码会导致错误“无法找到当前函数的边界”

    我在 gdb 的目标可执行文件之外 甚至没有与该目标对应的堆栈 无论如何 我想单步执行 以便我可以验证汇编代码中发生了什么 因为我不是 x86 汇编方面的专家 不幸的是 gdb 拒绝进行这种简单的汇编级调试 它允许我设置并停止在适当的断点上
  • 如何使用 Java 确定 Windows 是 32 位还是 64 位体系结构?

    如何使用 Java 确定 Windows 是 32 位还是 64 位体系结构 我不太相信读取 os arch 系统变量 如果用户在 64 位系统上运行 64 位 JVM 则它可以工作 如果用户在 64 位系统上运行 32 位 JVM 则它不
  • 调用always_inline‘_mm_mullo_epi32’时内联失败:目标特定选项不匹配

    我正在尝试使用 cmake 编译 C 程序 该程序使用 SIMD 内在函数 当我尝试编译它时 出现两个错误 usr lib gcc x86 64 linux gnu 5 include smmintrin h 326 1 错误 调用alwa
  • 源操作数和目标操作数是否需要相同大小?

    我刚刚尝试了这个问题 要求你解释一下代码行有什么问题 movl eax rdx 解决方案表明目标操作数的大小错误 仅当从较大尺寸变为较小尺寸时才 非法 还是源操作数和目标操作数对于所有指令 或至少 mov 类类型 必须具有相同的尺寸 是的
  • GCC ARM 汇编预处理器宏

    我正在尝试使用汇编 ARM 宏进行定点乘法 define MULT a b asm volatile SMULL r2 r3 0 1 n t ADD r2 r2 0x8000 n t ADC r3 r3 0 n t MOV 0 r2 ASR
  • “mov offset(%rip),%rax”有什么作用?

    Does rax获取偏移量加上这条指令的地址 还是下一条指令的地址 从微代码的角度来看 如果答案是下一条指令可能会更容易 下一个 这是 x86 上的一般规则 另请参阅分支 在 Intel 手册第 2 卷第 2 2 1 6 RIP 相对寻址部
  • 处理负整数的汇编 MASM

    我被指示用汇编语言编写一个程序 该程序将执行以下算术 A B C D A E 当没有负值发挥作用时 我成功地做到了这一点 但假设 A 5 B 4 C 3 D 2 和 E 1 这给了我们 5 4 3 2 5 1 或 6 这就是我需要帮助的地方
  • printf 内部如何工作? [复制]

    这个问题在这里已经有答案了 可能的重复 无需汇编的 C C 函数定义 https stackoverflow com questions 2442966 c c function definitions without assembly 你
  • 我如何使其解密而不是加密?

    想知道如何从加密代码中获取此代码并使用相同的代码来创建解密 我知道这意味着我必须反转一些指令并重新排序 但我无法弄清楚哪些指令需要重新排序 哪些不需要 编辑 这是完整的函数 可以让事情变得更清晰一些 对堆栈溢出非常陌生 因此对于任何混淆表示
  • fstcw 汇编操作数类型不匹配

    我正在尝试使用 C 中的内联汇编中指定的舍入模式对输入双精度舍入进行舍入 为此 我需要使用以下命令获取 FPU 控制字fstcw然后更改字中的位 不幸的是我在第一行遇到了错误 double roundD double n RoundingM
  • 自定义键盘中断处理程序

    我正在尝试编写一个简单的程序 将标准键盘中断替换为自定义的键盘中断 以减少变量 但是 如果不调用旧处理程序 它就无法工作 这是我的中断处理程序 handler proc push ax push di dec EF pushf when t
  • 如何关闭MIPS-GCC自动指令重排序?

    继这个问题之后 使用跳转 和链接 指令的奇怪 MIPS 汇编器行为 https stackoverflow com questions 3807480 weird mips assembler behavior with jump and
  • 内联汇编中的内存偏移

    在 A64 汇编器中 有不同的方法来指定地址 base 0 Simple register exclusive Immediate Offset base imm Offset Immediate Offset base Xm LSL im
  • x86 Assembly:很难找到无限循环挑战的想法

    我打算和我的朋友们进行一场类似于 corewars 的比赛 我们使用与原始游戏相同的内存网格 在游戏中 我们每个人都应该写一个 保险箱 它是一个不超过 25 行的无限循环 每个 安全 都有一个技巧或代码可以停止循环 从而破坏 安全 例如 S
  • I 类型指令的 MIPS 周期数 (addi)

    So on https en wikipedia org wiki Cycles per instruction https en wikipedia org wiki Cycles per instruction它说 对于多周期MIPS
  • 将 C 转换为 MIPS - 嵌套数组

    我正在学习 MIPS 汇编语言 在书中看到了这个例子 对我来说这似乎是不正确的 如果是的话 这将不是我在本书中发现的第一个错误 变量f and g被分配寄存器 s0 and s1分别是数组的基地址A and B are s6 and s7分
  • 分配内存空间的宏

    我需要让一个汇编程序员来计算帕斯卡三角形 https en wikipedia org wiki Pascal 27s triangle 这样帕斯卡三角形的每一行都与其他行分开存储在内存中 我想做一个 但我不知道如何使用宏在汇编中做到这一点
  • 如何禁用浮点单元(FPU)?

    我想在 x86 系统中禁用 FPU MMX SSE 指令 并且我将为设备不可用异常实现一个处理程序 我已经提到过控制寄存器 wiki 页面 http en wikipedia org wiki Control register 看来我必须在
  • 跨 AVX 通道的最佳方式是什么?

    有些问题具有类似的标题 但我的问题涉及其他地方未涵盖的一个非常具体的用例 我有 4 个 128d 寄存器 x0 x1 x2 x3 我想将它们的内容重新组合在 5 个 256d 寄存器 y0 y1 y2 y3 y4 中 以准备其他计算 on
  • gcc 如何知道内联汇编中使用的寄存器大小?

    我有内联汇编代码 define read msr index buf asm volatile rdmsr d buf 1 a buf 0 c index 使用该宏的代码 u32 buf 2 read msr 0x173 buf 我发现反汇

随机推荐

  • Python argparse 字典 arg

    我想收到一个dict str gt str 来自命令行的参数 做argparse ArgumentParser提供吗 或者还有其他图书馆吗 对于命令行 program py dict d key key1 value val1 key ke
  • 为什么

    编辑 另请参阅下面我自己的答案 2016 例如 ul li class first a href title Home a li li a href title Chi siamo a ul li a href title item1 a
  • 动态调用DLL中的方法

    我有一个包含一些方法 显示 隐藏和验证 的 DLL 这是其中一种方法的示例hide Panel paneldynamic String id List
  • Angular - routerLink 和状态问题

    我想使用 routerLink 和状态从 html 页面路由到另一个页面 使用标签没有问题 在登陆页面的 ngOnInit 期间 我可以按预期检索状态 使用标签主页也可以导航 但状态结果未定义 我有什么错吗 登录页面的html
  • 无法加载此类文件--2.2/gherkin_lexer_en,如何修复?

    我需要一点帮助 我该如何解决这个问题 当我打电话时cucumber我收到以下错误 WARNING You must use ANSICON 1 31 or higher https github com adoxa ansic on to
  • 目前仅在 PRIMARY KEY 的聚集列上支持排序依据

    卡桑德拉2 0 7 cql 3 1 1 CREATE TABLE playlists id uuid song order int song id uuid title text album text artist text PRIMARY
  • 如何为 has_many_polymorphs 和错误设置这些 CRUD 控制器操作

    我正在使用有很多多态性 https github com fauna has many polymorphs插件 以便可以将视频 主题和用户发布到个人资料中 因此 一个个人资料有很多 showable objects 可以是视频 主题和用户
  • 使用 microsoft graph c# asp.net 将新文件上传到 onedrive

    尝试将尚不存在的文件上传到 onedrive 我已经设法让它更新现有文件 但似乎无法弄清楚如何创建一个全新的文件 我已经使用以下方法完成了此操作Microsoft Graph图书馆 以下是用于更新现有文件的代码 public async T
  • 清除 Thread.interrupt() 标志的方法

    我最近继承了一个大型Java应用程序 其中几乎没有线程安全性 我目前正在研究的是让所有线程正确处理被中断的情况 而不是使用非常糟糕的线程Thread stop 部分问题是我不知道清除中断标志的每个方法调用 目前我知道以下内容将清除中断标志
  • C - 棘手的开关盒工作..!

    Folks 最近开始学习C 卡在一个点上 它是关于 switch case 语句的工作 这是代码 include
  • Android 使用令牌会话登录:类似于用户登录并保持会话状态直到注销

    登录 Android 应用程序后 如何在 php api 中创建令牌会话 像这样 我想确保当用户登录时 无论发生什么情况 崩溃 关闭 断电 重新启动 离开应用程序 它都会保持会话状态 同时用户信息数据将与中的所有活动一起发送将应用程序连接到
  • Xcode 6 Storyboard 无法居中

    我在尝试将对象置于故事板中心时遇到问题 我创建了一个新的 单视图应用程序 项目 输入了 main Storyboard 我试图在其中心添加一个标签 在 4 英寸 iPhone 的此故事板预览中 即使我强制故事板使用 3 5 4 或 4 7
  • 以原子方式从 Redis 数据结构中弹出多个值?

    是否有一个 Redis 数据结构 允许弹出 获取 删除 其中包含的多个元素的原子操作 有众所周知的 SPOP 或 RPOP 但它们总是返回单个值 因此 当我需要 set list 中的前 N 个值时 我需要调用该命令 N 次 这是昂贵的 假
  • 为什么从今天开始,meteor 在 _id 字段周围添加了 ObjectId?

    也许我完全错了 但是自从我今天开始的项目以来 当我使用meteor mongo直接连接到mongodb并插入一条记录 使用mycol insert 时 id字段被ObjectId 12345555 包围 从代码添加记录时 情况并非如此 因此
  • Android Studio - 应用程序未安装到手机上,但运行

    我使用 Android Studio 在手机上运行我的应用程序 它运行良好 但应用程序本身从未安装过 菜单中没有它的图标 每当我想测试我的应用程序时 我都必须 运行 我没有看到任何错误 我相信我的清单有问题 我在这里做错了什么
  • ARC、桥接演员和 GHUnit

    我正在关注来自的教程http gabriel github com gh unit docs appledoc include guide testing html http gabriel github com gh unit docs
  • 在特定时间删除Mongoose、Nodejs用户

    我有一个问题 如何在特定时间删除mongoose和nodejs用户 实际上 我希望用户在删除后 60 天内从数据库中删除 我如何实现这一目标 我添加了Momentjs之类的东西 之后应该怎么做 该代码应在用户进行删除操作 60 天后删除 s
  • Wrapper 找不到 servlet 类 Eclipse 停止为 Tomcat 生成类文件

    我做了以下事情 运行方式 gt 在服务器上运行 它工作正常 直到出现 JavaScript 错误 不知道为什么并挂起屏幕 所以我使用任务管理器杀死了 Eclipse 重复任务 1 不再生成运行 servlet 所需的类文件 但出现以下异常
  • 以简单的方式获取整数单位数字

    我不确定我的英语 但我需要获取整数的个位数 没有复杂的算法 但有一些 API 或其他技巧 例如 int a 53 int b 76 我添加这一点是因为我几乎总是不 符合质量标准 来发布 这让我发疯 请修复它 我花了 10 次拍摄才发布这个问
  • 无法调整尺寸指令

    我想知道为什么有些汇编指令可以推断 但其他的则不能 例如 在以下程序中我有 globl main main push rbp mov rsp rbp mov 8 8 rbp mov 8 rbp rax pop rbp ret 我收到以下错误