Ich weiß nicht, warum ich nichts mit printf
in GAS Assembly drucken kann, wenn \n
(LF - newline) am Ende der Zeichenfolge fehlt. Wenn ich den Zeilenumbruch char \n
die Zeile druckt, aber wenn ich \n
entferne die Zeile nicht gedruckt. Kann mir jemand sagen warum?Printf with gas assembly
.extern printf
.section .data
hello:
.string "Hello!" # doesn't print this way when \n is missing
.section .text
.globl _start
_start:
nop
movl $hello, %edi
movl $0, %eax
call printf
_end:
movq $60, %rax #use the _exit syscall
movq $0, %rdi #return error code 0
syscall #make syscall
Wenn Sie die C-Bibliothek verwenden möchten (das 'printf' ein Teil ist), verwenden Sie' main' als Einstiegspunkt und verwenden Sie nicht den 'exit' syscall. Sie lassen die C-Bibliothek nicht ordnungsgemäß herunterfahren, so dass die gepufferte Zeile nicht gedruckt wird. PS: Wenn du das nächste Mal siehst, dass deine Frage mit kaputter Formatierung auftaucht, repariere sie bitte selbst. Verwenden Sie die Vorschau entsprechend. – Jester
Versuchen Sie '.asciz' anstelle von' .string' in der Definition der auszugebenden Zeichenfolge. – zx485
Sorry Jester für Sie nicht hohe Standards erfüllen. – morophla