Shellparameter in Assembler



  • Hallo,

    in C:

    int main(int argc, char *argv[])
    

    Wobei argc die Anzahl der Shellparameter ist, und argv die Parameter selbst.

    Ich kann die Parameter direkt verarbeiten: argv[0] , argv[1] ...

    Wie werden in Assembler die Parameter übermittelt?



  • Äh, genau so? Sind ganz normale Funktionsparameter, wie bei jedem anderen Funktionsaufruf auch.



  • SG1 schrieb:

    Äh, genau so? Sind ganz normale Funktionsparameter, wie bei jedem anderen Funktionsaufruf auch.

    Es tut mir leid, ich bin noch Anfänger.

    Willst du sagen, dass die Parameter auf den Stack gelegt wurden, und dort zur Abholung bereit stehen?



  • Die Argumente der Command Line sollten immer auf dem Stack sein, nur kommt es auf den Assembler an, wo sie sich befinden (was auch mal hässlich werden kann), und oft sind sie auch in den *di Registern.
    Schaue dir unter den GNU Assembler Beispielen den Eintrag Command Line Arguments an oder siehe hier.



  • Youka schrieb:

    Die Argumente der Command Line sollten immer auf dem Stack sein, nur kommt es auf den Assembler an, wo sie sich befinden (was auch mal hässlich werden kann), und oft sind sie auch in den *di Registern.
    Schaue dir unter den GNU Assembler Beispielen den Eintrag Command Line Arguments an oder siehe hier.

    Es kommt auf den Assembler an?
    1. Wie komm ich beim as zu den Parametern?
    2. Wie komm ich beim nasm zu den Parametern?
    3. Wie komm ich beim fasm zu den Parametern?

    P.S.: Es wär übrigens gut, wenn man hier im Forum Anfängern weniger herablassend begegnet, schließlich warst auch du einmal ahnungsloser Anfänger, und da wolltest du ja auch, dass man dir nett hilft.



  • Frage zu Assembler schrieb:

    Youka schrieb:

    Die Argumente der Command Line sollten immer auf dem Stack sein, nur kommt es auf den Assembler an, wo sie sich befinden (was auch mal hässlich werden kann), und oft sind sie auch in den *di Registern.
    Schaue dir unter den GNU Assembler Beispielen den Eintrag Command Line Arguments an oder siehe hier.

    Es kommt auf den Assembler an?
    1. Wie komm ich beim as zu den Parametern?
    2. Wie komm ich beim nasm zu den Parametern?
    3. Wie komm ich beim fasm zu den Parametern?

    P.S.: Es wär übrigens gut, wenn man hier im Forum Anfängern weniger herablassend begegnet, schließlich warst auch du einmal ahnungsloser Anfänger, und da wolltest du ja auch, dass man dir nett hilft.

    ist ja jetzt auch nicht böse von den Leuten gemeint.

    Die Parameter werden vom OS am unteren Ende des Stacks abgelegt. Ganz gleich wie es auch bei normalen Funktionsaufrufen passiert.
    Das heißt, du musst wissen, an welcher Stelle die Parameter liegen, relativ zum ebp in deiner main Funktion.
    Dann addierst/subtrahierst du den Offset vom ebp und schon hast du die Adresse, an der die Daten liegen.

    OK, nun gehen wir ins Detail ... hier können wir im Forum ja auch nichts anderes als im www nach der Antwort suchen, denn ich glaube kaum jemand kann das aus dem Kopf heraus beantworten.

    Schau dir z.B. das hier an:
    http://www.dreamincode.net/forums/topic/285550-nasm-linux-getting-command-line-parameters/
    oder das hier:
    https://www.youtube.com/watch?v=3fmVgwBwZho



  • Danke, so eine Antwort ist viel hilfreicher als irgendwelce "Let me google that for you"-Links.



  • Inwiefern soll mein Post herablassend gewesen sein?
    Ich habe das Grundlegende beschrieben, was du wissen wolltest, und dir Links gegeben, wobei der lmgtfy Verweis dir den richtigen Suchbegriff aufgezeigt hat, den du wahrscheinlich nicht wusstest, und dir auf effektivste Weise die meisten Hilfen gezeigt hat.
    Du solltest dir an die eigene Nase fassen, denn du zeigst kaum Eigeniniative und wirst dann noch unverschämt, weil die Hilfe nicht deinen Vorstellung entspricht.
    Mich wundert, dass dir überhaupt noch wer geantwortet hat...



  • Youka schrieb:

    Inwiefern soll mein Post herablassend gewesen sein?
    Ich habe das Grundlegende beschrieben, was du wissen wolltest, und dir Links gegeben, wobei der lmgtfy Verweis dir den richtigen Suchbegriff aufgezeigt hat, den du wahrscheinlich nicht wusstest, und dir auf effektivste Weise die meisten Hilfen gezeigt hat.
    Du solltest dir an die eigene Nase fassen, denn du zeigst kaum Eigeniniative und wirst dann noch unverschämt, weil die Hilfe nicht deinen Vorstellung entspricht.
    Mich wundert, dass dir überhaupt noch wer geantwortet hat...

    die antworten hier sind denke ich mal ganz ok.
    ich hab mich aber früher, als "noob", auch oft ärgern müssen, wenn einen andere als dumm hinstellen.

    aber da muss man durch, das leben geht voran, man lernt dazu, und irgendwann kennt man sich bei computern bzw. beim programmieren gut aus. und aus heutiger sicht bin ich dann doch froh, dass manche leute recht schroffe antworten gegeben haben.

    also einfach nicht persönlich nehmen die antworten, die information, die drinnen steckt, rauslesen und wenn brauchbar, dann auch umsetzen.


Anmelden zum Antworten