Re: FreeBSD Assembler

From: Bernd Walter <ticso(at)cicely12.cicely.de>
Date: Wed, 15 Dec 2004 16:30:18 +0100

On Wed, Dec 15, 2004 at 03:42:25PM +0100, Lars Waechtler wrote:
> Hallo
>
> ich arbeite mich gerade in die Assemblersprache auf einem x86 FreeBSD System
> ein. Dazu habe ich ein Buch im Internet[1] gefunden welches sich auf den
> GNU as und Linux x86 bezieht.
>
> Da ich glaube mich zu erinnern, dass ich gelesen habe, dass die FreeBSD x86
> und Linux x86 syscalls sehr aehnlich zu einander sind, bin ich davon
> ausgegangen, das ich die Beispiele, mit Anderung der "Syscallnummer", auf
> FreeBSD x86 uebertragen kann.
>
> Leider ist dies nicht so richtig der Fall. Ich habe ein Programm geschrieben,
> was sich mit Exitstatus 0 beenden soll. Auf eine Linux x86 Maschine
> funktioniert das Programm. Auf einer FreeBSD x86 Maschine liefert es den
> Exitstatus 140.
>
> Ist meine Annahme ueber die Kompatibilitaet zwischen Linux und FreeBSD richtig?

Nein - es wird einige Übereinstimmungen in der Syntax geben, da
vermutlich das gleiche Parameterschema verwended wird und viele Syscalls
aufgrund von Spezifikationen identische Parameter bekommen, aber
letzlich ist denoch vieles anders.
Im speziellen Fall von _exit(2) wird ein int übergeben, traditionell
war der Wert kleiner - keine Ahnung was Linux benutzt.
Der Kernel kann aber auch die Linux Syscalls, du musst nur den Linux
Support im Kernel haben und das Binary als Linux deklarieren.
Außerdem kannst du in src/sys/compat/linux nachsehen wie die
übersetzung erfolgt.

> Wenn nicht, wo bekomme ich die Information ueber die Registerbelegung der
> syscalls heraus?

src/sys/syscalls.master beinhaltet die übersicht.
Das Format ist allgemeingültig - keine Ahnung wie das Übergabeschema
bei i386 aussieht - ich habe mir das bislang nur für alpha angesehen,
aber das dürfte das gleiche wie bei Linux sein.

Im Handbuch steht auch ein kleines Assemblerbeispiel drin, wobei ich
nicht nachvollziehen kann warum jemand Anwendungen in x86 Assembler
programmieren will.

-- 
B.Walter                   BWCT                http://www.bwct.de
bernd(at)bwct.de                                  info(at)bwct.de
To Unsubscribe: send mail to majordomo(at)de.FreeBSD.org
with "unsubscribe de-bsd-questions" in the body of the message
Received on Wed 15 Dec 2004 - 16:31:45 CET

search this site