最近我在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(
请考虑:
cd ~
cd $HOME
我认为第一个命令可能是第二个命令的糖分语法,而第二个命令则不那么抽象。
为了演示命令如何对编程新手变得越来越抽象(在解释什么是抽象的上下文中),专注于shell,我问:如何将非含糖的语法shell (Bash)命令转换为“较低”类型的代码,例如程序集,甚至机器代码(或者任何介于两者之间的代码,比如cd $HOME )?我可以用什么软件来实现这个目标,也许在shell中,来演示一个计算机命令是如何从简单到复杂的?
在回答一个问题的时候,有人写了assembly is not a language, it's a process。我倾向于同意,因为程序集“语言”依赖于它将运行的体系结构,不同CPU之间的体系结构可能有很大的不同。
因此,如果您已经为一种体系结构编写了程序集,这是否意味着您可以将它与其他编程语言一起包含在简历中--仅在assembly下?还是明确地说,您已经为特定的体系结构编写了程序集?
编辑:将“参与”改为“书写”。英语不是我的母语,我误解了这个词,认为它意味着你已经使用了很多,而不是一点点。