我对此有几点想法.第一个是分配全局变量可能更快,因为它们在程序首次生成时只分配一次,而每次调用函数时都必须分配局部变量.我的第二个想法是,由于局部变量在堆栈上,它们是通过基址指针寄存器访问的,因此每次访问局部变量时,必须递减存储在基址指针中的值.全局变量可以通过数据段中的静态地址直接访问.我的想法准确吗?
我正在尝试链接组装的单模块汇编语言程序yasm,我从以下错误中得到以下错误ld:
Undefined symbols for architecture x86_64:
"start", referenced from:
implicit entry/start for main executable
(maybe you meant: _start)
ld: symbol(s) not found for inferred architecture x86_64
Run Code Online (Sandbox Code Playgroud)
我实际上是半定期得到这个错误,所以我想这是一个相当普遍的问题,但不知怎的,似乎没有人有一个满意的答案.在有人说这是前一个问题的副本之前,是的,我知道.正如你可以看到类似标题问题的巨大文本墙,看到这是重复的,我也可以.
不适用于我的问题.我不是用C++编写的,并且在那个问题中给出的解决方案对于那种语言来说是特殊的.
也没有解决我的问题,因为我不是试图将多个目标文件链接在一起.
解决方案与高级语言中的特定框架有关.
解决方案涉及修复函数原型.由于明显的原因,这里不适用.
......你明白了.我能找到的每一个过去的问题都是通过一些不适用于我的情况的特殊方法来解决的.
请帮我解决一下这个.我已经厌倦了一次又一次地得到这个错误而无法对它做任何事情,因为它的记录很差.恕我直言世界迫切需要一个GNU Dev Tools等效的MS-DOS错误代码参考手册.
附加信息:
操作系统:Mac OS X El Capitain
来源清单:
segment .text
global _start
_start:
mov eax,1 ; 1 is the syscall number for exit
mov ebx,5 ; 5 is the value to return
int 0x80 ; execute a system …Run Code Online (Sandbox Code Playgroud)