转换为 ASM 的方法作用域和变量作用域
method scoping and variable scope translated to ASM
方法作用域和变量作用域只是一种高级语言的构造。
那么它只是人类编写具有复杂性的更好程序而不是大型过程代码的一种方式吗?
程序集级别是否存在作用域。
So does scope exist at the assembly level.
是的。
笼统地谈论汇编语言的一个问题是有太多不同的语言:汇编语言有数百种——仅 x86 就接近一打,然后考虑所有其他曾经存在的处理器,两者真实和 theoretical/educational.
也就是说,汇编语言也有名称,以及名称解析或多或少受到限制的上下文,即范围。
一些汇编器支持方法的概念(具有某种形式的 begin/end 对),在该方法中可以声明其他方法无法访问的局部名称——而其他汇编器则没有方法的概念所有,只是标有名称的位置:特别是,它们不标识方法的结尾,因此没有方法范围的概念。
大多数汇编器最低限度地允许文件范围与跨文件范围(extern 或 glob[a]l)名称。一些汇编器也支持带有本地名称的宏。一些支持记录定义,其中字段名称仅在某些记录引用结构中有效。
一些汇编程序有局部标签的概念(通常只是简单地编号而不是给出丰富的名称),这些标签仅在文件范围(命名)标签之间有效。其中一些允许您根据引用指定要匹配的本地标签是从引用向前还是从引用向后出现,这也形成了一种范围。
大多数结构化编程语言都支持带有块语句结构的嵌套范围,例如每个 {} 对引入一个新的范围。我不知道有任何汇编语言支持这种任意嵌套的范围(除了 web assembly,wasm,因为它是结构化的!)。
然而,在汇编语言中,名称通常用于代码和全局数据,而许多局部变量只是简单地分配给寄存器或基于堆栈的内存位置,因此名称解析并不真正适用——名称这些变量只出现在注释和程序员的头脑中。
当然,在运行时(几乎)没有名称绑定;名称解析已由 compiler/assembler/linker/loader 执行,硬件只能看到指示存储位置的数字。
方法作用域和变量作用域只是一种高级语言的构造。 那么它只是人类编写具有复杂性的更好程序而不是大型过程代码的一种方式吗? 程序集级别是否存在作用域。
So does scope exist at the assembly level.
是的。
笼统地谈论汇编语言的一个问题是有太多不同的语言:汇编语言有数百种——仅 x86 就接近一打,然后考虑所有其他曾经存在的处理器,两者真实和 theoretical/educational.
也就是说,汇编语言也有名称,以及名称解析或多或少受到限制的上下文,即范围。
一些汇编器支持方法的概念(具有某种形式的 begin/end 对),在该方法中可以声明其他方法无法访问的局部名称——而其他汇编器则没有方法的概念所有,只是标有名称的位置:特别是,它们不标识方法的结尾,因此没有方法范围的概念。
大多数汇编器最低限度地允许文件范围与跨文件范围(extern 或 glob[a]l)名称。一些汇编器也支持带有本地名称的宏。一些支持记录定义,其中字段名称仅在某些记录引用结构中有效。
一些汇编程序有局部标签的概念(通常只是简单地编号而不是给出丰富的名称),这些标签仅在文件范围(命名)标签之间有效。其中一些允许您根据引用指定要匹配的本地标签是从引用向前还是从引用向后出现,这也形成了一种范围。
大多数结构化编程语言都支持带有块语句结构的嵌套范围,例如每个 {} 对引入一个新的范围。我不知道有任何汇编语言支持这种任意嵌套的范围(除了 web assembly,wasm,因为它是结构化的!)。
然而,在汇编语言中,名称通常用于代码和全局数据,而许多局部变量只是简单地分配给寄存器或基于堆栈的内存位置,因此名称解析并不真正适用——名称这些变量只出现在注释和程序员的头脑中。
当然,在运行时(几乎)没有名称绑定;名称解析已由 compiler/assembler/linker/loader 执行,硬件只能看到指示存储位置的数字。