OS如何知道区分
int x = 0; //variable
和
int 0x80; //interrupt, call system_call()
答案 0 :(得分:6)
通过共同发生,'整数'的前3个字母与'中断'的前3个字母相同。两种不同的语言使用了这3个字母,它们意味着不同的东西。
同样,“聊天”是法语和英语中的一个词,但在法语中它意味着“猫”,在英语中它意味着“谈话”。
答案 1 :(得分:2)
int x = 0;
是C代码。
int 0x80;
是汇编代码。
此外,OS根本不知道,因为编译器/汇编器将其转换为机器代码......
答案 2 :(得分:0)
一个看起来像C,另一个看起来像汇编程序。
如果为int x = 0生成汇编程序;在编译器中使用-S开关 你会看到代码实际上有多么不同。
答案 3 :(得分:0)
因为它们是两种不同的编程语言。
第一个是C中的变量声明和定义,第二个是在Linux x86中调用系统调用的汇编指令。
它们可能由两个不同的编译器解释,或者如果它们在同一个文件中,则第二条指令在汇编代码块中,编译器知道必须区别对待。