2016-06-15 13 views
0

Ich möchte Daten aus einer Datei in Baugruppe lesen AT & T aber ich weiß nicht wirklich wo ich anfangen soll. Ich habe keine nützliche Ressource im Internet gefunden.Daten aus Datei in Baugruppe lesen AT & T

Meine Arbeitsumgebung Info: (. open/read/write/etc)

OS: Ubuntu 14 - 64 bit 
CPU: Intel 
GAS compiler 
Assembly Sintax: AT&T 
I'll assemble with: as -o hello.o hello.s 
I'll link with: ld -o test hello.o 
+2

Wenn Sie dies nur für Bildungszwecke tun, könnten Sie auch betrügen. (Hmm, das klang logischer in meinem Kopf. Nun gut!) Was ich damit meine, ist, dass Sie den entsprechenden Code in C schreiben und dann den Compiler auffordern, einen Dump des Assembler-Codes zu erzeugen, zu dem er kompiliert wurde. Gehen Sie durch diese Assembly-Ausgabe und stellen Sie sicher, dass Sie verstehen, was es bedeutet. Der mühsame Akt der Handschrift * der Versammlung ist nicht der wichtigste Teil für Bildungszwecke. Niemand schreibt dieses Zeug mehr in die Versammlung. Der wichtige Teil ist * zu verstehen, was es bedeutet * und wie es gemacht würde. –

+0

Wissen Sie, wie Sie einen Systemanruf tätigen? Wissen Sie, welche Systemaufrufe Sie auf x86 verwenden müssen, um in eine Datei zu schreiben? – fuz

+0

@CodyGray: C-Code, der Systemaufrufe tätigt, ruft eigentlich nur die Wrapper von glibc auf. Sie können das arg-Setup und 'syscall' nicht wirklich sehen, es sei denn, Sie schreiben es selbst oder betreten glibcs ​​Wrapper mit einem Debugger. (Oder in 32bit-Code, gleiches für 'int 0x80' oder' sysenter' in der vdso-Seite, die vom Kernel exportiert wurde, um die User-Space-Seite des 32bit 'sysenter' /' sysexit'-Tanzes zu implementieren.) Aber ich stimme dem Ganzen zu Punkt: ** Das Erlernen der Unix-Systemaufruf-API ist orthogonal mit Learning Asm und dem Systemaufruf A * B * I. ** –

Antwort

1

nachschlagen, wie die Systemprogrammierung auf POSIX in C zu tun, verwenden Sie dann das gleiche System in Ihrem asm aufruft. Es gibt nichts besonderes über asm für diese, im Vergleich zu nur in C zu tun (außer, dass in C Sie anstelle der syscall Anweisung direkt den glibc-Wrapper würden verwenden.)

die tag wiki für Links finden Sie dokumentieren, wie man Systemaufrufe von asm machen.