experchange > asm.x86

Xavier Maillard (11-26-19, 08:12 AM)
Hello,

I am just starting to learn writing some fun progs in asm.

I just jotted down some instructions, assembled it and linked it.
Running it just segfault.

The question is: why ? :)

The program is just this:

..section .data

..section .text
..globl _start
_start:

movl $1, %eax
movl $0, %ebx
int $0x80

As you can see, it just does *nothing*

Assembled it using: as
Linked it with ld

This is running on a WSL Debian system (should matter I guess)

Any pointer on what's wrong with this ?

Thanks.

N.B: I am just an amateur and I do not plan writing serious things atm, just having fun :)
Bart (11-26-19, 10:15 PM)
On 26/11/2019 06:12, Xavier Maillard wrote:
[..]
> int
> Hello,
> I am just starting to learn writing some fun progs in asm.
> I just jotted down some instructions, assembled it and linked it.
> Running it just segfault.
> The question is: why ? :)
> The program is just this:
> .section .data
> .section .text
> .globl _start
> _start:
> movl , %eax
> movl
> Hello,
> I am just starting to learn writing some fun progs in asm.
> I just jotted down some instructions, assembled it and linked it.
> Running it just segfault.
> The question is: why ? :)
> The program is just this:
> .section .data
> .section .text
> .globl _start
> _start:
> movl $1, %eax
> movl $0, %ebx
> int $0x80
> As you can see, it just does *nothing* Syscall #1 appears to do 'exit', so it /ought/ to do nothing!, %ebx
> int
> Hello,
> I am just starting to learn writing some fun progs in asm.
> I just jotted down some instructions, assembled it and linked it.
> Running it just segfault.
> The question is: why ? :)
> The program is just this:
> .section .data
> .section .text
> .globl _start
> _start:
> movl $1, %eax
> movl $0, %ebx
> int $0x80
> As you can see, it just does *nothing* Syscall #1 appears to do 'exit', so it /ought/ to do nothing!x80
> As you can see, it just does *nothing* Syscall #1 appears to do 'exit', so it /ought/ to do nothing!x80
> As you can see, it just does *nothing* Syscall #1 appears to do 'exit', so it /ought/ to do nothing!x80
> As you can see, it just does *nothing* Syscall #1 appears to do 'exit', so it /ought/ to do nothing!


Are you saying it crashes instead of gracefully exiting?

Is your system 64 bits? If so you might try using rax and rbx instead of
eax and ebx. However I don't know whether the 64-bit set of syscalls are
the same (one set I saw appeared to be different from the 32-bit ones.
eg call #1 does sys_write).

(I know nothing about Linux assembly coding, it just looked intriguing.)

If you can't get anywhere, try starting from C and write the simplest
program. Compile it like this:

gcc -S prog.c

to get the assembly output in prog.s, which can also be assembled and
linked by gcc (which will invoke as and ld, or you can do that yourself):

gcc prog.s -oprog

Now you can play with the ASM instructions in prog.s, but starting from
something that works.
Melzzzzz (11-26-19, 11:06 PM)
On 2019-11-26, Xavier Maillard <xavier> wrote:
[..]
> Linked it with ld
> This is running on a WSL Debian system (should matter I guess)
> Any pointer on what's wrong with this ?


It's probably because you assembled and linked with 64 bits.
You should specify 32 bits...