Hey,
Ik volg deze tutorial om de basis een beetje van assembler te kennen.
Als ik echter dit probeer te compileren ( gcc args.s -o args ) krijg ik deze errors:
Mijn args.s bestand ziet er als volgt uit:
Er scheelt dus duidelijk iets met deze regel:
Heeft iemand een idee wat deze regel zou moeten doen, of wat er fout aan is?
Dank bij voorbaat!
Ik volg deze tutorial om de basis een beetje van assembler te kennen.
Als ik echter dit probeer te compileren ( gcc args.s -o args ) krijg ik deze errors:
Code:
args.s: Assembler messages:
args.s:30: Error: bad or irreducible absolute expression
args.s:30: Error: expecting scale factor of 1, 2, 4, or 8: got `$1'
Mijn args.s bestand ziet er als volgt uit:
Code:
.section .data
new_line_char:
.byte 0x0a
.section .text
.globl main
.align 4
main:
movl %esp, %ebp #store esp in ebp
again: addl $4, %esp #next param on stack (+4)
movl (%esp),%eax #move next praameter into %eax
testl %eax,%eax # %eax == NULL?
jz end_again #jump to end_again if eax==null
call putstring
jmp again
end_again:
xorl %eax,%eax #eax = 0
incl %eax #eax = 1, system call exit
xorl %ebx,%ebx #parameter 0 for exit
int $0x80
putstring: .type @function
pushl %ebp
movl %esp, %ebp
movl 8(%ebp),%ecx
xorl %edx,%edx
count_chars:
movb (%ecx,%edx,$1), %al
testb %al,%al
jz done_count_chars
incl %edx
jmp count_chars
done_count_chars:
movl $4, %eax
xorl %ebx,%ebx
incl %ebx
int $0x80
movl $4, %eax
leal new_line_char, %ecx
xorl %edx,%edx
incl %edx
int $0x80
movl %ebp,%esp
popl %ebp
ret
Er scheelt dus duidelijk iets met deze regel:
Code:
movb (%ecx,%edx,$1), %al
Heeft iemand een idee wat deze regel zou moeten doen, of wat er fout aan is?
Dank bij voorbaat!