나는 그것은 C 라이브러리 호출하는 부분에서 세그먼트 오류가 발생하여 다음 코드조립 분할은 오류
#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
의 실행 중에 오류가 발생했습니다. C 라이브러리와 관련하여 x64 코드를 컴파일하는 동안 놓친 내용이 있습니까? 모두 당신의 문자열이 종료 null 인 : 또는
감사
그 movq의 – Managu
감사 사이에 적절한 양에 의해 %의 RDI를 늘릴 수도 있습니다 모두, 나는 그 문제를 해결했다. 내가 /lib/ld-linux-x86-64.so.2를 수동으로 쓴 다음로드 된 주저 함수가 _start로 바뀌 었습니다. 동적 링크로 사용했습니다. 나쁜 영어로 죄송합니다. –