最近我在C中遇到了asm保留词,我想利用它来避免某些C语义规则:特别是,我想从函数中修改一个变量:
int a = 5;
asm("asm code to change a from 5 to, like, 6")
int main() {
printf("a equal to %d\n", a);
}
现在,从我的计算机科学课程中,我知道组装是依赖于平台的,所以它的使用应该是非常有限的。然而,我看到了一些反复的指令,如MOV或ADD。
我的问题是:
尽管程序集依赖于全局平台,但是否有一个子集为所有汇编程序所理解?我的意思是,如果我编写asm(
GNU汇编程序as根据体系结构使用不同的字符来指定单行注释,例如# on x86、; on 29k或@ on ARM。此外,不管平台如何,都支持C风格的注释(/* */)。
对于不同的体系结构,是否有不同的评论风格的技术原因?多行注释的意思是否定的,因为它可以在任何平台上工作-然而,如果对可用于注释的字符没有技术限制,为什么要设计汇编程序在不同的平台上要求不同的注释样式(对于单行注释)?
在学习编程语言的原理时,我看到我们可以将编程语言划分为“自由格式”或“固定格式”。例如,Java和C是自由格式语言,而RPG是一种固定格式语言。但我不知道这两个术语的含义是什么,也不知道如何判断给定语言属于哪一类。我在谷歌上搜索过,没有一个有意义的想法。
在我的演讲幻灯片中提到了这一点:
int a=0
在Java和C中,这种解释是基于语法的。这类语言被称为空闲格式。但是在RPG中,这种语义是基于我们如何在布局中使用这些不同的组件。这类语言被称为固定格式。