FB18 - Das Forum für Informatik

fb18.de / Off-Topic / Hard- und Softwarefragen

Interessanter asm-Code

Interessanter asm-Code 2006-05-13 16:08
Anonymer User
In der Newsgroup 'linux.gentoo.user.de' habe ich einen interessanten Artikel (Message-ID: <6clfa-47x-17@gated-at.bofh.it>) gefunden:

===============
hallo liste,

ich bin im moment am diplomarbeit basteln und bin dabei über folgende prozessor-anomalie gestolpert:

folgendes kleine asm-programm - siehe anhang - läut auf einen teil meiner zugänglichen rechner ohne probleme und auf einem anderen teil verhält es sich "komisch". komisch bedeutet, entweder wird das aktuelle fenster geschlossen oder der x-server gekillt oder die verbindung (ssh) getötet, oder oder oder. auf jeden fall erwartet man das nicht.

wenn man den cmp dx, 4 durch z.b. cmp dx, 8 ersetzt, dann läuft das
programm wie erwartet…

meine bitte nun: könnt ihr das bei euch mal ausproberen und dann posten, was für hardware ihr habt. danke schonmal im vorraus.


twist

ps:
auch wenn es unwahrscheinlich ist, dass eure hardware dabei verreckt kann ich keine haftung übernehmen. die cippoolkisten laufen jedenfalls noch alle :)


"mein" cippool - info uni wü:
20 + 14 kisten: dual p4 3.2GHz, 2G mem - gentoo unstable
20 kisten: p4 3GHz, 1G mem - gentoo unstable
+ 2 server 7 und 8g mem - quad xeon mit VIEL platte - gentoo stable




;
; intel ia32 bug??? 2006-05-13
;
; by twist@evilhome.de
;
; compile with:
;
; nasm -f elf main.asm
; ld -s -o main main.o
;


section .data

stack: times 64 dd 0
stackLen: equ $-stack

section .text
global _start

_start:
mov esp, stack + stackLen

; tut auch
; mov dx, 0
xor dx, dx

; tut
; cmp dx, 4
cmp dx, 0

; tut nicht
; cmp dx, 8

pushf

pushf
pop ax

popf


; exit
mov eax, 1
mov ebx, 0
int 80h
===============

Tatsächlich beendet dieser Code (als User ausgeführt) teilweise die Shell, das komplette X, die SSH-Verbindung. Ich finde das Verhalten sehr strange => kann dazu jemand was sagen?

(edit fal: Topictitel)

Re: Interessanter asm-Code 2006-05-13 22:31
asdf
Merkwürdiger Code…, aber hier:

pushf pushf pop ax ^^ popf

Ändere pop ax zu pop eax. Dann bekommst Du keine #GP mehr.