저는 리눅스, 어셈블리 프로그래밍 (GAS) 및 영어에 대한 초보자입니다. 미안, 내가 뭔가 잘못 쓰는 경우. 나는 Google 번역이 나쁘지 않은 모두를 쓸 수있을만큼 도움이되기를 바랍니다.쓰기 시스템 콜을 쓸 때 리눅스는 무엇을합니까?
어떤 라이브러리 (예 : printf()
)에서 함수를 호출하지 않고도 .data
섹션에 저장된 숫자 세트를 텍스트 파일에 쓰는 방법을 알고 싶습니다.이 작업은 어셈블러에서만 수행 할 수 있습니다. 나는 기성품 해결책을 원하지 않는다. 필자의 글쓰기 후 리눅스 커널이 무엇을하는지 알고 싶다. 어떻게 작동합니까? 어떻게 설계 되었습니까?
STDOUT에 숫자 목록을 인쇄하려고하는데 단말기에 홀수 기호가 표시됩니다. 필자는 쓰기 시스템 호출을 올바르게 사용하는 방법을 이해하지 못하기 때문에이 문제가 발생했다고 생각했습니다.
이것은 내가이 코드는 .ascii "Hello world\0"
을 위해 잘 작동하지만 숫자의 목록은 지금
.section .data
list: .long 12, 31, 42
.section .text
.globl _start
_start:
movl $4, %eax
movl $1, %ebx
movl $list, %ecx
movl $12, %edx
int $0x80
movl $1, %eax
movl $0, %ebx
int $0x80
에 대한 얻었다 것입니다.
이것은 엄청나게 광범위한 주제이며 당신이 가지고 있지 않은 것으로 의심되는 것을 이해하기 위해서는 많은 배경 지식이 필요합니다.우리는 당신이 지금까지 끼워 넣었던 노력과 당신이 붙어있는 곳을 보여 주면서 그것을 한 입 크기의 덩어리로 나누고 싶을 것입니다. – tangrs
http://www.tldp.org/HOWTO/Assembly-HOWTO/ 읽기 관련성이 있습니다. –
조나단 바틀렛 (Jonathan Bartlett)의 "프로그래밍 프로그래밍"을 읽었습니다. 어느 것이 더 낫습니까? – user2422443