[TUHS] as(1) on Ultrix-11 vs 2.11BSD

Clem Cole clemc at ccc.com
Fri May 1 08:09:50 AEST 2020


Ouch -  just looked at that more carefully.   exit it returning the what
was left on the stack.  The push $0 is something in the system calling
convention for that port.  You'll have to look at the kernel sources for
that system in code that takes the trap.
Clem

On Thu, Apr 30, 2020 at 6:06 PM Clem Cole <clemc at ccc.com> wrote:

> Alexander, the exit(2) system call takes a parameter, which is an integer
> status that the process will return.  The value 0 is traditionally a
> successful return, and anything else signifies an error condition.
> This assembler is the moral equiv of:
>
> char hello[] = { "hello world\n" };
> main() {
>    write(1, hello, sizeof(hello));
>    exit(0);
> }
>
> On Thu, Apr 30, 2020 at 5:50 PM Alexander Voropay <alec at sensi.org> wrote:
>
>> Can anyone please explain the last $0 pushed to the stack ?
>> Early SysIII ans SYSV on the i386 (and may be on i286) used
>> similar syscall convention.
>>
>> I wrote about this:
>> https://minnie.tuhs.org/pipermail/tuhs/2019-October/019274.html
>> https://minnie.tuhs.org/pipermail/tuhs/2019-October/019294.html
>>
>> Example:
>> ===
>>         .file "test.s"
>>         .version "02.01"
>>         .set WRITE,4
>>         .set EXIT,1
>>         .text
>>         .align 4
>>         .globl entry
>> entry:
>>          pushl %ebp
>>          movl %esp,%ebp
>>          subl $8,%esp
>>
>>          pushl $14 /length
>>          pushl $hello
>>          pushl $1 /STDOUT
>>          pushl $0
>>          movl $WRITE,%eax
>>          lcall $0x07,$0
>>          addl $16,%esp
>>
>>          pushl $0
>>          movl $EXIT,%eax
>>          lcall 0x07,$0
>>
>>          .data
>>          .align 4
>> hello:
>>          .byte 0x48,0x65,0x6c,0x6c,0x6f,0x2c, 0x20,0x77,0x6f,0x72
>>          .byte 0x6c,0x64,0x21,0x0a,0x00
>>
>> ср, 29 апр. 2020 г. в 17:19, <ron at ronnatalie.com>:
>> >
>> > Thanks for the link.   With that help, I fixed the bug in the program:
>> >
>> >    mov $6., -(sp)
>> >      mov $1f, -(sp)
>> >      mov $1,-(sp)
>> >      mov $0,-(sp)
>> >      sys 4
>> >      add $8., sp
>> >      mov $0,-(sp)
>> >      mov $0,-(sp)
>> >      sys 1
>> > 1:   <hello>
>> >
>> >
>> > >> Sorry, I typed that in haste without testing. I don’t have a 2.11
>> system
>> > >> to try it on. However, reading the source code, I did that wrong. The
>> > >> args go on the stack, not in line with the code.
>> > >> mov $6, -(sp)
>> > >> mov a, -(sp)
>> > >> mov $1,-(sp)
>> > >> sys 4
>> > >
>> > > Without suggesting that every helpful post should be tested, I find
>> the
>> > > superb https://unix50.org web emulator excellent for such things.
>> > >
>> > > Many thanks to the folks hosting & maintaining this great resource!
>> > >
>> > >
>> >
>> >
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://minnie.tuhs.org/pipermail/tuhs/attachments/20200430/2fc099f6/attachment.htm>


More information about the TUHS mailing list