Microsoft MVP성태의 닷넷 이야기
디버깅 기술: 162. x86/x64의 기계어 코드 최대 길이 [링크 복사], [링크+제목 복사],
조회: 19371
글쓴 사람
정성태 (techsharer at outlook.com)
홈페이지
첨부 파일
 
(연관된 글이 2개 있습니다.)

x86/x64의 기계어 코드 최대 길이

궁금해서 찾아본 것인데,

x86_64 ASM - maximum bytes for an instruction?
; https://stackoverflow.com/questions/14698350/x86-64-asm-maximum-bytes-for-an-instruction

2.3.11 AVX Instruction Length
The maximum length of an Intel 64 and IA-32 instruction remains 15 bytes.

x86/x64 모두 15 바이트가 최대 길이라고 합니다. 실제로 다음의 글에 보면,

Longest x86 Instruction
; https://web.archive.org/web/20131109063453/https://www.onlinedisassembler.com/blog/?p=23

예제가 하나 나옵니다. ^^

lock add DWORD PTR ds:[esi+ecx*4+0x12345678],0xefcdab89

==> 67 66 f0 3e 81 84 8e 78 56 34 12 89 ab cd ef

이와 함께 우연히 발견한 CLR의 코드가 재미있습니다. ^^

clr!JIT_MonEnter:
00007fff`8b0a26b0 33d2            xor     edx,edx
00007fff`8b0a26b2 6666666666660f1f840000000000 nop word ptr [rax+rax]

nop 코드인데 "word ptr" 및 레지스터 연산을 통한 간접 주소까지 합해 14바이트입니다. 유사한 코드로 x86에서는 NOP 코드가 9바이트까지 길어질 수 있는 것 같습니다. ^^

[x86 환경]
66 NOP DWORD ptr [EAX + EAX*1 + 00000000H]

==> 66 0F 1F 84 00 00 00 00 00H

1바이트 nop을 n번 반복해도 되겠지만. ^^




[이 글에 대해서 여러분들과 의견을 공유하고 싶습니다. 틀리거나 미흡한 부분 또는 의문 사항이 있으시면 언제든 댓글 남겨주십시오.]

[연관 글]






[최초 등록일: ]
[최종 수정일: 2/27/2020]

Creative Commons License
이 저작물은 크리에이티브 커먼즈 코리아 저작자표시-비영리-변경금지 2.0 대한민국 라이센스에 따라 이용하실 수 있습니다.
by SeongTae Jeong, mailto:techsharer at outlook.com

비밀번호

댓글 작성자
 




... 196  197  [198] 
NoWriterDateCnt.TitleFile(s)
25정성태7/17/200319363COM 개체 관련: 5. C++ Attributes - Make COM Programming a Breeze with New Feature in Visual Studio .NET [2]파일 다운로드1
24정성태7/17/200323147.NET Framework: 5. (MHT 변환해서 가져온 글) .NET 의 COM+ 서비스 사용파일 다운로드1
23정성태7/17/200326779.NET Framework: 4. webservice.htc - HTML Script에서도 웹서비스 엑세스 [2]파일 다운로드1
22정성태7/17/200321346.NET Framework: 3. .NET Framework SDK 퀵 스타트 자습서
21정성태7/17/200320343.NET Framework: 2. 김현승님의 "ASP.NET & .NET EnterpriseServices & Remoting 코드 템플릿"
20정성태2/15/200527552VS.NET IDE: 2. Platform SDK 설치
19정성태7/17/200323429.NET Framework: 1. JScript.NET 강좌 사이트[영문]
18정성태7/17/200320802COM 개체 관련: 4. Exchanging Data Over the Internet Using XML [1]파일 다운로드1
17정성태7/17/200328656VC++: 6. Win32 API Hook - 소스는 "공개소스"에있습니다. [2]
16정성태7/17/200321198COM 개체 관련: 3. IE 툴밴드의 위치문제파일 다운로드1
15정성태7/17/200322121VC++: 5. 시행착오 - 클래스 포인터를 void * 로 대입후 delete 하는 경우.
14정성태7/17/200323649VC++: 4. MFC Message 처리 구조
13정성태7/17/200323260VC++: 3. template 활용의 최고 단계!
12정성태5/7/200620971VC++: 2. void func1( MYCLASS *&pBuildingElement ); 선언의 의미
10정성태7/17/200319424기타: 2. 데브피아 사이트의 클럽 서비스 내에 있는 Standard C++ Research
9정성태7/17/200324676기타: 1. Programming Applications for Microsoft Windows 4th Edition
8정성태7/17/200322105COM 개체 관련: 2. CWindowImpl 의 기본 윈도우 클래스 명을 바꾸려면?
7정성태7/17/200324747VS.NET IDE: 1. VC++ 프로파일링 사용법
4정성태7/17/200337306VC++: 1. C++ 클래스 멤버변수 초기화 [3]
3정성태7/17/200323196스크립트: 2. JScript에서의 Blocking 동작을 막아주는 COM 메서드
2정성태6/14/200642025COM 개체 관련: 1. IWebBrowser2와 IHTMLDocument2의 상호 변환 [2]
1정성태7/17/200326103스크립트: 1. IE 의 훌륭한 저장기능 - userData
... 196  197  [198]