了解汇编中函数的问题?

时间:2018-04-14 23:15:29

标签: assembly cpu-architecture

我给出了以下装配程序。

subl $16, %esp                              
movl $0, -4(%ebp)                               
movl $10, -8(%ebp)                              
movl $5, -12(%ebp)                              
movl $0, -16(%ebp)                              
_L1:                                
movl -16(%ebp), %eax                            
cmpl -12(%ebp), %eax                                
jge _L2                             
movl -16(%ebp), %eax                            
addl -8(%ebp), %eax                             
movl %eax, -8(%ebp)                             
movl -16(%ebp), %eax                            
addl $1, %eax                               
movl %eax, -16(%ebp)                                
jmp _L1                         
_L2:                                
movl -4(%ebp), %eax                             
addl $16, %esp

我想知道是否曾进入过L1?我看到两个函数定义,一个用于_L1,另一个用于_L2。但主要功能从不调用L1。

我看到该程序分为:

subl $16, %esp                              
movl $0, -4(%ebp)                               
movl $10, -8(%ebp)                              
movl $5, -12(%ebp)                              
movl $0, -16(%ebp)          




_L1:                                
movl -16(%ebp), %eax                            
cmpl -12(%ebp), %eax                                
jge _L2                             
movl -16(%ebp), %eax                            
addl -8(%ebp), %eax                             
movl %eax, -8(%ebp)                             
movl -16(%ebp), %eax                            
addl $1, %eax                               
movl %eax, -16(%ebp)                                
jmp _L1                         



_L2:                                
movl -4(%ebp), %eax                             
addl $16, %esp

但是这些函数都不是从外部函数调用的。所以这个程序和以下一样好:

subl $16, %esp                              
movl $0, -4(%ebp)                               
movl $10, -8(%ebp)                              
movl $5, -12(%ebp)                              
movl $0, -16(%ebp)  

我来自Python世界,所以这对我来说没有多大意义。

它是否在初始扫描时实际执行L1? (没有跳到)。

对此的任何帮助都会很棒 - 我刚刚开始学习大会。

0 个答案:

没有答案