Problemas com o acesso aos argumentos da linha de comando no linux a partir do x86 asm
Eu tenho um programa asm básico que verifica se uma string é um dígito. Eu estava adicionando no código para ler argumentos de linha de comando, colocá-lo mantém falhas de seg.
se o que eu li estiver certo, isso deve obter a quantidade de argumentos passados para o programa, que deve ser armazenado em 0 (% ebp). O que estou fazendo de errado?
A totalidade do código pode ser encontrada aqui:http://pastebin.com/kGV2Mxx4 O problema são as primeiras 3-5 linhas do _start.
Ao olhar para a saída do lscpu, eu tenho uma cpu i868. Embora, diz que pode operar em 32 bits e 64 bits. Estou executando o linux de 32 bits (Arch linux x86)
Eu consertei o problema. Eu fiz 2 pop's, um para ignorar o nome dos programas, o próximo para obter o primeiro argumento. o código atualizado pode ser encontrado aqui:http://pastebin.com/xewyeHYf
Alguém pode me dizer por que eu não poderia simplesmente fazer o seguinte:
pushl 8(%ebp)
ou
movl 8(%ebp), %eax