이 (Linux, AT & T, Intel) x86 프로그램은 세 가지 인수를 읽고 % ebx에서 가장 큰 값을 존재 상태로 저장합니다. 인수를 레지스터로 팝하면 결과 값은 바이트로 보입니다. int 값을 얻으려면 어떻게해야합니까?x86 AT & T 어셈블리의 명령 줄 인수 처리
[편집 -. 내가 질문 내가 인수의 int 값을 얻을 수 atoi
을 사용하여 어떻게 생각 아래 해롤드의 의견 덕분에]
.section .text
.globl _start
_start:
popl %edi # Get the number of arguments
popl %eax # Get the program name
popl %ebx # Get the first actual argument
movl (%ebx), %ebx # get the actual value into the register (?)
popl %ecx # ;
movl (%ecx), %ecx
popl %edx #
movl (%edx), %edx
bxcx:
cmpl %ebx,%ecx
jle bxdx
movl %ecx,%ebx
bxdx:
cmpl %ebx,%edx
jle end
movl %edx,%ebx
end:
movl $1,%eax
int $0x80
무엇 int 값을 할 수
그래서 첫 번째 명령 행 인수의 정수 값을 얻을 수 있습니다? 'atoi '에 해당하는 것을 찾고 계십니까? – harold
프로그램이'./a.out 5 6 7'처럼 실행 된 후 명령 행 args의 int 값 -이 경우 종료 상태는 7이어야합니다. 그래서'atoi'와 같은 것이 필요하다면, 즉 값 5, 6 등은 문자열로 읽혀지는 것을 의미합니까? – jaybee