ebp
                  
                  
                  
                  
                  
                    push $0  // counter
                  
                  
                    counter: -4(esp)
                  
                  
                   
                  
                  
                  ассемблер ругается:
                  
                  
                  > Error: junk at end of line, first unrecognized character is `-'
                  
                  
                  
                  
                  
                  есть ли способ сохранить значение локальной переменной в метку не используя регистры?
                  
                  
                
Стикер
Есть. push/pop.
 Myrrrca
                          
                        
                      
                    
                    
                    
                    
                      Автор вопроса
                      
                      
                        
                          Myrrrca
                          
                        
                      
                    
                    
                    
                    
                      Автор вопроса
                    
                    
                  то есть просто в голове держать отрицательный отступ для каждой локальной переменной? 🤯
Я не совсем понял, чего именно ты хочешь добиться. Но если ты хочешь локальные переменные с человеческими именами, у тебя есть ebp (кадр стека ты уже создал), адресация относительно ebp не зависит от push/pop, а чтобы не запоминать смещение, у тебя есть .set.
 Myrrrca
                          
                        
                      
                    
                    
                    
                    
                      Автор вопроса
                      
                      
                        
                          Myrrrca
                          
                        
                      
                    
                    
                    
                    
                      Автор вопроса
                    
                    
                  да, в своём примере я esp и ebp перепутал в последней строчке про .set почитаю, спасибо а как добиться человеческого имени для этой локальной переменной по -4(%ebp) ?
В нормальных асмах есть locals, proc. На крайний случай, equ, но это уже некрасиво. Глянь, есть ли это в GAS.
.set MYVAR,-4 movl %eax,MYVAR(%ebp) Ну и sub $4,%esp в прологе
 Myrrrca
                          
                        
                      
                    
                    
                    
                    
                      Автор вопроса
                      
                      
                        
                          Myrrrca
                          
                        
                      
                    
                    
                    
                    
                      Автор вопроса
                    
                    
                  Не уверен, что для gas вообще есть proc-макросы. Ну то есть, возможность писать макросы там, конечно, есть, но я никогда ничего сложного на них не видел.
 Myrrrca
                          
                        
                      
                    
                    
                    
                    
                      Автор вопроса
                      
                      
                        
                          Myrrrca
                          
                        
                      
                    
                    
                    
                    
                      Автор вопроса
                    
                    
                  а в прологе разве нужно вычитать из esp если в leave уже есть mov ebp, esp pop ebp ?
Это эпилог. Классический пролог — это создание стекового кадра и резервирование места под локальные переменные: push ebp/mov ebp,esp/sub esp,locals_size.
 Myrrrca
                          
                        
                      
                    
                    
                    
                    
                      Автор вопроса
                      
                      
                        
                          Myrrrca
                          
                        
                      
                    
                    
                    
                    
                      Автор вопроса
                    
                    
                  перепутал слово эпилог и пролог в своём вопросе, голова уже под вечер того
Обсуждают сегодня