目录

汇编中extern与global的区别

先补充一下编译和链接的一些知识:

  1. 编译是对单个文件分别进行操作,只对当前文件进行规则检查和匹配
  2. 链接是对多个文件同时作用,将多个文件看成一个文件后在进行规则检查和匹配

.extern xxx

声明已经在别的文件中定义过的变量或函数 详细来说就是extern只是声明一下xxx已经在别的文件中定义过了,告诉编译器在这个文件中找不到xxx是正常的,之后链接器链接文件的时候会正确处理的。

.global xxx

global就是讲xxx声明为全局变量,在链接阶段对所有文件可见

总结

总的来说.extern声明的变量是对部分文件(定义所在的文件和被extern所声明的文件)可见,而.global声明的变量对所有文件可见。