Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/lua/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Assembly 什么是「;目的“;英特尔语法中逗号的定义?_Assembly_Syntax_X86_Language Design_Intel Syntax - Fatal编程技术网

Assembly 什么是「;目的“;英特尔语法中逗号的定义?

Assembly 什么是「;目的“;英特尔语法中逗号的定义?,assembly,syntax,x86,language-design,intel-syntax,Assembly,Syntax,X86,Language Design,Intel Syntax,我一直在写一个编程游戏——随之而来的是编写一种编程语言。起初,我希望编程语言是汇编语言的一个大简化(就像游戏EXAPUNKS,如果有人知道那是什么的话) 但随着时间的推移,我对功能非常上瘾,这门语言最终变得非常像一个稍微简化的x86,带有intel语法。有一个关键区别: 我的语言不需要逗号mov[eax+1]ebx在我的游戏中完全有效 那么,为什么英特尔语法中需要逗号呢?是否存在缺少逗号会导致歧义的情况?我正在考虑使用逗号,只是为了让语言更为熟悉,但实际上并不需要它们。在英特尔语法中,您可以为内

我一直在写一个编程游戏——随之而来的是编写一种编程语言。起初,我希望编程语言是汇编语言的一个大简化(就像游戏EXAPUNKS,如果有人知道那是什么的话)

但随着时间的推移,我对功能非常上瘾,这门语言最终变得非常像一个稍微简化的x86,带有intel语法。有一个关键区别:

我的语言不需要逗号
mov[eax+1]ebx
在我的游戏中完全有效


那么,为什么英特尔语法中需要逗号呢?是否存在缺少逗号会导致歧义的情况?我正在考虑使用逗号,只是为了让语言更为熟悉,但实际上并不需要它们。

在英特尔语法中,您可以为内存操作数编写
eax[ebx]
。如果没有逗号,这是不明确的。intel不是语法。汇编语言是由汇编程序定义的,而不是由目标程序定义的。您可以选择您想要的任何语法,逗号与否,没有理由模仿其他语法,例如ld[eax+1]ebx是完全可以理解的。作为语法的作者,您可以定义在没有更多符号的情况下是否无法区分某些东西。@old_timer如果没有语法,那么您将英特尔汇编和AT&T汇编称为什么?@old_timer:“英特尔语法”是指英特尔公司定义并在其手册中使用的x86 asm语法的方言。不是“asm for Intel architecture/IA32”(如果这是它的真正含义,并且是OP刚刚发明的,那么这将不是一个有用的术语)。堆栈溢出甚至有一个标记(带有),OP使用了该标记。当然,NASM风格和MASM风格之间有多种英特尔语法风格,但它们都需要逗号来分隔操作数。@fuz谢谢,这正是我想要的!因此,逗号是用来区分
eax[ebx]
'eax[ebx]
的,后者可能很难识别或是其他什么?在英特尔语法中,您可以为内存操作数编写
eax[ebx]
。如果没有逗号,这是不明确的。intel不是语法。汇编语言是由汇编程序定义的,而不是由目标程序定义的。您可以选择您想要的任何语法,逗号与否,没有理由模仿其他语法,例如ld[eax+1]ebx是完全可以理解的。作为语法的作者,您可以定义在没有更多符号的情况下是否无法区分某些东西。@old_timer如果没有语法,那么您将英特尔汇编和AT&T汇编称为什么?@old_timer:“英特尔语法”是指英特尔公司定义并在其手册中使用的x86 asm语法的方言。不是“asm for Intel architecture/IA32”(如果这是它的真正含义,并且是OP刚刚发明的,那么这将不是一个有用的术语)。堆栈溢出甚至有一个标记(带有),OP使用了该标记。当然,NASM风格和MASM风格之间有多种英特尔语法风格,但它们都需要逗号来分隔操作数。@fuz谢谢,这正是我想要的!所以逗号是用来区分
eax[ebx]
'eax[ebx]
的,后者可能很难识别或是其他什么?