Microsoft MVP성태의 닷넷 이야기
디버깅 기술: 162. x86/x64의 기계어 코드 최대 길이 [링크 복사], [링크+제목 복사],
조회: 22432
글쓴 사람
정성태 (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

비밀번호

댓글 작성자
 




... 166  167  168  169  170  171  172  [173]  174  175  176  177  178  179  180  ...
NoWriterDateCnt.TitleFile(s)
817정성태12/21/200927033개발 환경 구성: 59. WebDev 2.0에서 실행하는 Pet Shop 4.0
816정성태12/19/200928918개발 환경 구성: 58. Pet Shop 4.0을 IIS 없이 실행하는 방법 [1]파일 다운로드1
815정성태12/18/200931620개발 환경 구성: 57. Pet Shop 4.0 - SQL Server Compact Edition Version - 두 번째 이야기파일 다운로드1
814정성태12/16/200927437오류 유형: 91. VS2010 beta2 - The application cannot start
812정성태12/11/200931632개발 환경 구성: 56. Pet Shop 4.0 - SQL Server Compact Edition Version파일 다운로드2
811정성태12/2/200946163.NET Framework: 169. [in, out] 배열을 C#에서 C/C++로 넘기는 방법 - 두 번째 이야기 [8]파일 다운로드2
810정성태12/1/200941331.NET Framework: 168. [in,out] 배열을 C#에서 C/C++로 넘기는 방법 [3]
809정성태11/27/200930531오류 유형: 90. Method not found: 'Void System.Reflection.Emit.DynamicMethod..ctor(System.String, System.Type, System.Type[])'.
808정성태11/26/200939416VC++: 38. X64 빌드 오류: error LNK2001: unresolved external symbol [COMDLL]_ProxyFileInfo
807정성태11/23/200932909웹: 14. 로컬에 있는 HTML 페이지를 보호 모드에서 여는 방법
802정성태11/19/200935253.NET Framework: 167. 다른 스레드의 호출 스택 덤프 구하는 방법파일 다운로드1
801정성태11/18/200943149개발 환경 구성: 55. Hyper-V와 고성능 그래픽 카드의 성능 문제 해결 [1]
800정성태11/13/200935893VS.NET IDE: 66. 수동으로 구성해 본 VC++ 프로젝트 설정: ReleaseMinDependency
798정성태11/10/200934765개발 환경 구성: 54. .NET 개발자가 처음 설치해 본 TOMCAT [2]
797정성태11/9/200930767개발 환경 구성: 53. 물리 PC에 설치된 Windows 7을 Hyper-V로 이전하면?
796정성태11/2/200934787오류 유형: 89. Windows 7 백업 오류 - 0x80070057
795정성태11/2/200931550오류 유형: 88. TFS 2010 (beat2) 설치 오류 -TF255272
793정성태10/19/200933274.NET Framework: 166. WPF - XAML 요소의 네임스페이스와 CLR 타입 매핑
792정성태10/17/200933897웹: 13. IIS 7.5 에서 SQL Express 연결 시 오류
791정성태10/17/200937746웹: 12. 요청 페이지에 대해 빈 화면만 보이는 경우 [1]
789정성태10/13/200934405COM 개체 관련: 22. BB FlashBack SDK와 ActiveX 버전 관리 [7]
786정성태10/9/200930155개발 환경 구성: 52. 테스트를 위한 평가판 운영체제 구하기
785정성태10/8/200936363.NET Framework: 165. WPF - UI 업데이트를 바로 반영하고 싶다면? (2)파일 다운로드1
783정성태10/7/200934396.NET Framework: 164. WPF - 데이터 바인딩된 트리에서 부모 노드 찾는 방법 [1]파일 다운로드1
782정성태10/6/200936567개발 환경 구성: 51. Windows 7 - 다중 원격 접속(Remote Desktop) 허용
781정성태9/30/200933309.NET Framework: 163. WPF - TreeView 자동 스크롤 기능 해지 [2]파일 다운로드1
... 166  167  168  169  170  171  172  [173]  174  175  176  177  178  179  180  ...