'000000q'是什么意思?

LRD*_*RDX 2 assembly x86-64 nasm yasm

我正在用这本教科书学习x86_64汇编语言(yasm).在那里,我遇到了以下定义文件访问标志的行:

O_RDONLY        equ    000000q
O_WRONLY        equ    000001q
O_RDWR          equ    000002q
Run Code Online (Sandbox Code Playgroud)

问题是他们的价值观是什么意思?什么q代表什么?

Mic*_*tch 9

在NASM/YASM中,它是一个后缀,表示该数字是八进制的.从文档中

3.5.1.数字常量

数字常量只是一个数字.NASM允许您以多种方式指定各种数字的数字:您可以为H,Q或O添加后缀,为十六进制,八进制和二进制设置B,或者您可以在C的样式中为十六进制设置前缀0x ,或者你可以在Borland Pascal风格的前缀$ for hex.但请注意,$前缀作为标识符的前缀实现双重任务(参见第3.1节),因此前缀为$符号的十六进制数必须在$后面有一个数字而不是一个字母.

一些例子:

mov ax,100              ; decimal
mov ax,0a2h             ; hex
mov ax,$0a2             ; hex again: the 0 is required
mov ax,0xa2             ; hex yet again
mov ax,777q             ; octal
mov ax,777o             ; octal again
mov ax,10010011b        ; binary
Run Code Online (Sandbox Code Playgroud)