frage eines nicht low level programmierers zum thema stapel(stack?)



  • ok, ich weis nicht, wo man mir sonst diese frage beantworten könnte, wenn nicht hier:

    soweit ich das verstanden hab, basiert der stack auf dem prinzip, dass man nur das objekt welches man zuletzt auf den stack gelegt hat abrufen kann, wenn man das 2. oberste haben will, muss man zuerst das oberste löschen.

    da ich im moment das problem hab, dass ich den stack auf dem heap simulieren muss,hab ich mich damit auseinandergesetzt, und bin nu auf folgendes problem gestoßen:

    als beispiel die rechnung 1*2+3*4
    zuerst wird 1*2(ergebnis 2) und 3*4(ergebnis 12) verrechnet und in der reihenfolge ihrer berechnung auf den stack gelegt.
    wenn ich jetzt aber die subtraktion durchführen möchte, steh ich vor dem problem, dass die werte auf dem stack nun in umgekehrter reinfolge liegen, sodass ich, wenn ich die werte einfach nur nach der reihe benutzen würde, statt 2-12 12-2 rechnen würde.
    die frage ist nun, wie ihr das mit assembler macht, bzw wie ihr mit assembler das problem umgeht.



  • du kannst mit assembler ohne weiteres auf elemente im stack zugreifen, die nicht obenaufliegen (SP-2)

    Wenn also eine Subtraktion oder Division vorliegt, wo die Reihenfolge entscheidend ist, musst du halt vorher das Element unter dem Obersten auslesen... Das ist aber nicht das prinzip des stacks und damit verletzt du es, heißt im endeffekt nix anderes, als dass der stack hier eine ungeeignete methode ist... da ich gesehen habe, dass dein thread auch im C++ forum ist, nehme ich an, dass du mit C++ arbeitest... dementsprechend solltest du dir mal vector oder so anschauen... da hast du zumindest auch eine push_back-methode



  • hrmph, immer diese hektiusche und verwirrte Crossposterei... *gaehn*
    => *closed*


Anmelden zum Antworten