traf ich einen Fehler bei derAssembly Segmentation Fault
der folgenden Assembly-Code ausgeführt wird#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
Es Segmentierungsfehler in dem Teil der C-Bibliothek Berufung begegnet: Aufruf printf Es in x86_64-Modus ausgeführt wird. Alles, was ich beim Kompilieren von x64-Code in Bezug auf die C-Bibliothek verpasst habe? Oder gibt es etwas falsch mit dem Code
Dank
möchten% rdi um einen entsprechenden Betrag erhöhen, zwischen denen – Managu
des movq Dank jeder, ich habe das Problem gelöst. Es war die falsche lib, die ich geladen habe funktioniert gut, nachdem ich es manuell mit /lib/ld-linux-x86-64.so.2 und ich ersetzte die Hauptfunktion mit _start. I ld es als dynamische Verknüpfung. Sorry für das schlechte Englisch –