【问题标题】:yasm: Expected `,' with immediate valueyasm:预期的“,”,具有直接价值
【发布时间】:2015-06-05 19:51:51
【问题描述】:

给定以下汇编程序:

BITS 64
mov rax, 0b111

Yasm 输出:

error: expected `,'

为什么这里需要逗号? NASM 很高兴地组装了这个。

【问题讨论】:

  • YASM 不期望二进制文字有一个 b suffix 吗? (即111b
  • 是的,我刚刚发现了!与 nasm 有什么奇怪的区别。随意发布这个作为答案,我会接受它

标签: assembly nasm x86-64 yasm


【解决方案1】:

来自 YASM 手册:

3.5.1。数值常数
数字常量只是一个数字。 NASM 允许您以多种方式指定各种数字基数中的数字:您可以添加后缀 H、Q 或 O,B 表示十六进制、八进制和二进制,或者你可以在C风格的十六进制前加0x,或者你可以在Borland Pascal风格的十六进制前加$。

一些例子:
mov ax,10010011b ; binary

NASM 手册补充:

此外,当前版本的 NASM 接受 前缀 0h 表示十六进制,0d 或 0t 表示十进制,0o 或 0q 表示八进制,0b 或 0y 表示二进制

TL;DR:虽然 NASM 支持二进制文字的 b-suffix 和 0b-prefix,但 YASM 仅支持后缀变体。所以0b111需要写成111b

【讨论】:

    猜你喜欢
    • 2018-01-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-07
    • 1970-01-01
    • 2020-08-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多