2

次のアセンブリ プログラムがあるとします。

BITS 64
mov rax, 0b111

Yasm の出力:

error: expected `,'

なぜここにコンマが必要なのですか? NASM は喜んでこれを組み立てます。

4

1 に答える 1

3

YASM マニュアルから:

3.5.1. 数値定数
数値定数は単なる数値です。NASM では、さまざまな基数でさまざまな方法で数値を指定できます。16進数、8 進数、および2進数の場合はH、Q または O、およびB の接尾辞を付けることができます。または、C のスタイルで 16 進数の場合は 0x の接頭辞を付けることができます。または、Borland Pascal のスタイルで 16 進数の前に $ を付けることができます。 いくつかの例:


mov ax,10010011b ; binary

NASM マニュアルには次のように追加されています。

さらに、現在のバージョンの NASM は、16 進数のプレフィックス0h、10 進数の 0d または 0t、8 進数の 0o または 0q、2 進数の0b または 0y を受け入れます。

TL;DR: NASM はバイナリ リテラルのb-suffix と -prefix の両方をサポート0bしていますが、YASM は接尾辞バリアントのみをサポートしています。したがって0b111、 のように記述する必要があります111b

于 2015-04-01T08:40:21.047 に答える