ho rilevato un errore durante l'esecuzione del seguente codice AssemblyAssemblea Segmentation Fault
#cpuid using C library Functions
.section .data
output:
.asciz "The Processor Vendor ID is '%s'\n"
.section .bss
.lcomm buffer, 12
.section .text
.globl main
main:
movq $0, %rax
cpuid
movq $buffer, %rdi
movq %rbx, (%rdi)
movq %rdx, (%rdi)
movq %rcx, (%rdi)
pushq $buffer
pushq $output
call printf
addq $8, %rsp
pushq $0
call exit
Si incontra segmentation fault alla parte di libreria C Calling: chiamata printf è in esecuzione in modalità x86_64. Qualcosa che ho perso durante la compilazione del codice x64 per quanto riguarda la libreria c? O c'è qualcosa di sbagliato con il codice
Grazie
potrebbe desiderare di aumentare% rdi di una quantità appropriata tra quelle di movq – Managu
Grazie a tutti, ho risolto il problema. E 'stata la libreria errata che ho caricato funziona bene dopo averla ld manualmente con /lib/ld-linux-x86-64.so.2 e ho sostituito la funzione principale con _start. Lo faccio come collegamento dinamico. Ci scusiamo per il cattivo inglese –