강의 관련...
272
작성한 질문수 36
안녕하세요 항상 좋은 강의를 해주셔서 감사합니다
1.
다름이 아니라, push,pop 관련 연습을 하던 중
push 378
pop rax
PRINT_DEC 1, ax를 시도하였습니다.
378을 프로그래머용 계산기로 비트 전환을 하면 1 0111 1010으로 되어서 1바이트 크기를 초과하게 되어버리기 때문에
ax를 1바이트 크기로 출력하라는 해당 명령이 오류가 날 줄 알았지만 정상적으로 378 출력이 되었습니다....왜 이런 것인지 궁금합니다
2.
push 1 push 2 push 3 pop rax pop rbx pop rcx를 디버그할 때
memory 항목의 변수를 8 간격으로(38,30,28,20) 나누신 이유와
그리고 push 1을 할 때 스택 메모리가 1을 8바이트로 인식한다고 하신 이유가 궁금합니다
감사합니다!
답변 1
1
1.
PRINT_DEC는 공식 어셈 명령어가 아니라 단순히
툴에서 제공하는 헬퍼 매크로라 이해할 필요가 없습니다.
2.
64비트 운영체제 환경에선 모든 기본 단위가 64비트(8바이트)입니다.
레지스터도 64비트로 설계 되었고 주소 체계도 64비트 체계고, etc..
0
1. 그렇다면 헬퍼 매크로들의 경우에는 어느 정도 범위가 초과한다고 해도 그냥 실행을 해주는 것인지 정도만 알려주실 수 있으신가요?
2. 만약 32비트 운영체제의 컴퓨터에서 실행하게 된다면 memory 항목의 변수도 4로 나누고, 스택 메모리도 1을 4바이트로 인식을 하게 되는 것인가요?
3. 64비트 운영체제의 컴퓨터에서 push 378, pop eax를 실행하자
instruction not supported in 64-bit mode라는 내용이 나왔는데
eax도 rax의 일부분인데 왜 해당 내용이 출력되었는지 궁금합니다
0
너무 디테일 한 부분에 궁금하신 것이 많으십니다.
사소한 부분들과 에러와 관련된 부분은 무조건 구글링을 하시는 습관을 들이셔야 합니다.
사실 인프런에 올라오는 질문들의 90%는 구글링을 하면 1분 내로 답이 나옵니다.
결론적으로 그냥 칩 제조사들이 그렇게 만들었기 때문이고
64비트 환경 칩셋에서 pop은 64비트랑만 사용 가능합니다.
0
앗 사실...세부적이고 간단한 내용들도 최대한 이해를 해놔야 나중에 코딩할 때 헷갈리는 일이 줄어들 것이라고 개인적으로 판단해서 궁금증이 많이 생겼던 것 같습니다
p.s.
굉장히 간단한 질문이라 오히려 관련 내용이 없을 줄 알고 검색 시도를 안 했던 건데 아니었군요 난이도가 일정 수준 이상 되는 질문들만 있는 줄 알고 있었습니다;;
정말 감사합니다!
visualstudio에서 파일분할관리실습시 설정 문의를 드립니다.
0
559
1
정렬함수 좀 더 확실하게 이해 할 방법이 있을까요?
0
453
1
strcpy() 구현 관련 질문
0
535
1
빌드(망치)를 누르니 이런 오류가 떴습니다. 어떻게 해야 하나요?
0
475
1
클래스 타입의 포인터 질문합니다
0
559
1
입력값을 enum 값에 넣어주는거 이제 막혔나요?
0
503
1
템플릿 특수화 관련 질문
0
389
1
포인터 관련 질문합니다!
0
271
1
Unable to start assembler. Check your settings.
0
849
2
cpu선택
0
549
1
포인터 질문이 있습니다
0
331
1
20:35 에서 구조체 크기에 대한 질문입니다!
0
589
1
iterator 삭제관련
0
415
1
함수 호출을 디스어셈블러로 분석하다가 궁금점이 생겼습니다!
0
316
1
15 분 45초 대 질문
0
317
0
스택 프레임 질문합니다!
2
312
1
오른값 참조 in 게임
0
391
0
동적할당 질문이 있습니다
0
457
1
안녕하세요 메모리에 대해 질문드립니다.
0
312
1
함수객체 의 매개변수
0
365
1
복사생성자
0
439
1
main이나 endl 부분이 주황색으로 표시된건 어떻게 하나요
0
430
1
포인터 실습 강의를 보고 궁금한게 있습니다.
0
359
1
스택 오버플로우
2
801
1





