1. Dashboard
  2. Forum
    1. Unerledigte Themen
  3. Mitglieder
    1. Letzte Aktivitäten
    2. Benutzer online
    3. Team-Mitglieder
    4. Trophäen
    5. Mitgliedersuche
  4. Tutorial Bereich
  • Anmelden
  • Registrieren
  • Suche
Dieses Thema
  • Alles
  • Dieses Thema
  • Dieses Forum
  • Seiten
  • Forum
  • Lexikon
  • Erweiterte Suche
  1. Informatik Forum
  2. Webmaster & Internet
  3. Entwicklung

Overflow trap?

  • Deep Thought
  • 12. Dezember 2002 um 17:44
  • Unerledigt
  • Deep Thought
    4
    Deep Thought
    Mitglied
    Punkte
    175
    Beiträge
    27
    • 12. Dezember 2002 um 17:44
    • #1

    Wie kann ich einen unsigned Integer Overflow in C trappen?
    FPE_INTOVFLOW geht irgendwie nicht...
    Oder muss ich da noch was bestimmtes machen?

    Alles ist möglich, die Frage ist nur wer's programmiert!

  • hal
    32
    hal
    Mitglied
    Reaktionen
    52
    Punkte
    11.122
    Beiträge
    2.208
    • 12. Dezember 2002 um 22:06
    • #2

    sowas wie einen integer overflow gibts in C nicht, der wrappt dann herum (auf 0 wenns unsigned ist).

    [font=verdana,sans-serif]"An über-programmer is likely to be someone who stares quietly into space and then says 'Hmm. I think I've seen something like this before.'" -- John D. Cock[/font]

    opentu.net - freier, unzensierter Informationsaustausch via IRC-Channel!
    Hilfe und Support in Studienangelegenheiten, gemütliches Beisammensein, von und mit Leuten aus dem Informatik-Forum!

  • Deep Thought
    4
    Deep Thought
    Mitglied
    Punkte
    175
    Beiträge
    27
    • 13. Dezember 2002 um 08:45
    • #3

    Das heißt es gibt in C keine andere Möglichkeit einen Overflow festzustellen, außer so?

    Code
    unsigned long a, b, c;
    c = a + b;
    if(c < a) Overflow!

    Alles ist möglich, die Frage ist nur wer's programmiert!

  • Irrlicht
    7
    Irrlicht
    Mitglied
    Reaktionen
    1
    Punkte
    421
    Beiträge
    82
    • 13. Dezember 2002 um 09:11
    • #4

    jo

    das irrlicht

  • Deep Thought
    4
    Deep Thought
    Mitglied
    Punkte
    175
    Beiträge
    27
    • 13. Dezember 2002 um 09:19
    • #5

    OK. Danke!
    Assembler rulez!!

    Alles ist möglich, die Frage ist nur wer's programmiert!

  • Soulmerge
    7
    Soulmerge
    Mitglied
    Punkte
    405
    Beiträge
    71
    • 13. Dezember 2002 um 13:54
    • #6

    kannst ja Assmebler-Code in dein c-Programm einbinden mit

    Code
    asm Befehl

    '100 little bugs in the code, 100 bugs in the code. Fix one bug, compile it again: 101 little bugs in the code.
    101 little bugs in the code . . .'
    Continue until 0 Bugs reached...

  • Deep Thought
    4
    Deep Thought
    Mitglied
    Punkte
    175
    Beiträge
    27
    • 13. Dezember 2002 um 15:40
    • #7

    Das ist aber nicht C Standard.
    Deshalb geht das bei meiner Borland C Version wunderbar.
    Bei VC mit __asm,.
    Aber ich weiß nicht, wie das mit gcc funktioniert.
    asm("mov ax,1"); erzeugt noch einen Fehler:
    - too many memory references for mov ?!

    Alles ist möglich, die Frage ist nur wer's programmiert!

  • jeuneS2
    11
    jeuneS2
    Mitglied
    Reaktionen
    17
    Punkte
    1.227
    Beiträge
    238
    • 13. Dezember 2002 um 17:46
    • #8

    das liegt denk ich daran, dass gcc bzw. gas (der Assembler von gcc) die AT&T Syntax verwendet; "mov ax, 1" wird dann zu "mov 1, %ax"... eine Möglichkeit bei neueren Versionen von gas is das Makro "_intel_syntax" oder so, dann funkt die Masm Syntax (nicht aber die Nasm Syntax)... oder aber man lernt die imho leicht verbaute AT&T Syntax...

    Why bother spending time reading up on things? Everybody's an authority, in a free land.

  • MaxAuthority
    17
    MaxAuthority
    Gewinner des Desktop-Contest 2002
    Reaktionen
    5
    Punkte
    3.165
    Beiträge
    626
    • 13. Dezember 2002 um 23:39
    • #9

    na endlich gibts noch ein paar informatiker die sich mit assembler auskennen...


    ...dachte schon, hier wären nur noch high-level typen... :)

    http://vimperator.org - Make Firefox behave like Vim

  • dose
    13
    dose
    Mitglied
    Reaktionen
    4
    Punkte
    1.679
    Beiträge
    335
    • 14. Dezember 2002 um 00:50
    • #10

    Lang, lang is her...und die AT&T Syntax is außer grindig nur grindig *speib*

    yast, SuSEconfig, apt-get and rpm - the 4 horsemen of the apocalypse

    Platform of insanity :: http://www.dose-xp.org

  • hal
    32
    hal
    Mitglied
    Reaktionen
    52
    Punkte
    11.122
    Beiträge
    2.208
    • 14. Dezember 2002 um 21:14
    • #11

    Du kannst einen überlauf sehr einfach abfangen indem du als ergebnis eine jeweils größere Variable (zB long long) verwendest.

    [font=verdana,sans-serif]"An über-programmer is likely to be someone who stares quietly into space and then says 'Hmm. I think I've seen something like this before.'" -- John D. Cock[/font]

    opentu.net - freier, unzensierter Informationsaustausch via IRC-Channel!
    Hilfe und Support in Studienangelegenheiten, gemütliches Beisammensein, von und mit Leuten aus dem Informatik-Forum!

  • root@axp1
    4
    root@axp1
    Mitglied
    Punkte
    125
    Beiträge
    25
    • 15. Dezember 2002 um 00:49
    • #12

    auf das kannst du dich nicht verlassen ... long long ist nicht unbedingt grösser als long, so wie long nicht unbedingt grösser als int ist ...

    Überzeugungen sind gefährlichere Feinde der Wahrheit als Lügen.
    --
    Friedrich Nietzsche

  • hal
    32
    hal
    Mitglied
    Reaktionen
    52
    Punkte
    11.122
    Beiträge
    2.208
    • 15. Dezember 2002 um 17:37
    • #13

    naja, aber inline-assembly ist noch weniger portabel :)

    [font=verdana,sans-serif]"An über-programmer is likely to be someone who stares quietly into space and then says 'Hmm. I think I've seen something like this before.'" -- John D. Cock[/font]

    opentu.net - freier, unzensierter Informationsaustausch via IRC-Channel!
    Hilfe und Support in Studienangelegenheiten, gemütliches Beisammensein, von und mit Leuten aus dem Informatik-Forum!

  • Deep Thought
    4
    Deep Thought
    Mitglied
    Punkte
    175
    Beiträge
    27
    • 15. Dezember 2002 um 23:44
    • #14

    Das Problem mit größeren Variablen ist die Aufgabenstellung, die sagt: Realisieren sie +,-,*,: mit beliebig großen Zahlen. Und das heißt auch weit über den Bitbreiten, die eine normale Programmiersprache zur Verfügung stellt.
    Man könnte natürlich BCD verwenden, aber das ist mir zu langsam!
    Ich hab' also die if Methode zu Erkennung eines Overflows angewandt und es funktioniert wunderbar. Fertiges Programm im Anhang, falls es wen interessiert.

    EDIT: ganz so fertig ist es wohl nicht, 1 Bug hab ich schon entdeckt!

    Alles ist möglich, die Frage ist nur wer's programmiert!

  • Maximilian Rupp 27. Dezember 2024 um 12:08

    Hat das Thema aus dem Forum Programmieren nach Entwicklung verschoben.

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!

Benutzerkonto erstellen Anmelden

Rechtliches

Impressum

Datenschutzerklärung