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代表什么?
在NASM/YASM中,它是一个后缀,表示该数字是八进制的.从文档中
3.5.1.数字常量
数字常量只是一个数字.NASM允许您以多种方式指定各种数字的数字:您可以为H,Q或O添加后缀,为十六进制,八进制和二进制设置B,或者您可以在C的样式中为十六进制设置前缀0x ,或者你可以在Borland Pascal风格的前缀$ for hex.但请注意,$前缀作为标识符的前缀实现双重任务(参见第3.1节),因此前缀为$符号的十六进制数必须在$后面有一个数字而不是一个字母.
一些例子:
Run Code Online (Sandbox Code Playgroud)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