#ifndef _AZU_MEMORY_ #define _AZU_MEMORY_ #include "../device.h" #define DRC_UNIT 0x00000010 class MEMORY : public DEVICE { public: unsigned char * mem; unsigned long mem_size; #ifdef DYNAMIC_RECOMPILE unsigned char * drc; unsigned long drc_size; #endif //今回は↓が対象 unsigned char _r1(unsigned char *,unsigned long); unsigned short _r2(unsigned char *,unsigned long); unsigned long _r4(unsigned char *,unsigned long); void _w1(unsigned char *,unsigned long,unsigned char); void _w2(unsigned char *,unsigned long,unsigned short); void _w4(unsigned char *,unsigned long,unsigned long); //今回は↑が対象 MEMORY(unsigned long,unsigned long); ~MEMORY(); }; #endif _AZU_MEMORY_ |
;Win32 EXTRN ?_w4@MEMORY@@UAEXPAEKK@Z:PROC ; MEMORY::_w4 EXTRN ?_w2@MEMORY@@UAEXPAEKG@Z:PROC ; MEMORY::_w2 EXTRN ?_w1@MEMORY@@UAEXPAEKE@Z:PROC ; MEMORY::_w1 EXTRN ?_r4@MEMORY@@UAEKPAEK@Z:PROC ; MEMORY::_r4 EXTRN ?_r2@MEMORY@@UAEGPAEK@Z:PROC ; MEMORY::_r2 EXTRN ?_r1@MEMORY@@UAEEPAEK@Z:PROC ; MEMORY::_r1 ;AMD64 EXTRN ?_w4@MEMORY@@UEAAXPEAEKK@Z:PROC ; MEMORY::_w4 EXTRN ?_w2@MEMORY@@UEAAXPEAEKG@Z:PROC ; MEMORY::_w2 EXTRN ?_w1@MEMORY@@UEAAXPEAEKE@Z:PROC ; MEMORY::_w1 EXTRN ?_r4@MEMORY@@UEAAKPEAEK@Z:PROC ; MEMORY::_r4 EXTRN ?_r2@MEMORY@@UEAAGPEAEK@Z:PROC ; MEMORY::_r2 EXTRN ?_r1@MEMORY@@UEAAEPEAEK@Z:PROC ; MEMORY::_r1 |
;x86 ; Class MEMORY ; _r1/_r2/_r4/_w1/_w2/_w4 .686P .XMM .model flat .code PUBLIC ?_r1@MEMORY@@UAEEPAEK@Z ?_r1@MEMORY@@UAEEPAEK@Z PROC mov eax,dword ptr [esp+04h] mov ecx,dword ptr [esp+08h] mov al, byte ptr [eax+ecx] ret 8 ?_r1@MEMORY@@UAEEPAEK@Z ENDP PUBLIC ?_r2@MEMORY@@UAEGPAEK@Z ?_r2@MEMORY@@UAEGPAEK@Z PROC mov eax,dword ptr [esp+04h] mov ecx,dword ptr [esp+08h] mov ax, word ptr [eax+ecx] ror ax,8 ret 8 ?_r2@MEMORY@@UAEGPAEK@Z ENDP PUBLIC ?_r4@MEMORY@@UAEKPAEK@Z ?_r4@MEMORY@@UAEKPAEK@Z PROC mov eax,dword ptr [esp+04h] mov ecx,dword ptr [esp+08h] mov eax,dword ptr [eax+ecx] bswap eax ret 8 ?_r4@MEMORY@@UAEKPAEK@Z ENDP PUBLIC ?_w1@MEMORY@@UAEXPAEKE@Z ?_w1@MEMORY@@UAEXPAEKE@Z PROC mov dl, byte ptr [esp+0ch] ;data mov eax,dword ptr [esp+04h] ;addr mov ecx,dword ptr [esp+08h] ;offset mov byte ptr [eax+ecx], dl ret 0ch ?_w1@MEMORY@@UAEXPAEKE@Z ENDP PUBLIC ?_w2@MEMORY@@UAEXPAEKG@Z ?_w2@MEMORY@@UAEXPAEKG@Z PROC mov dx, word ptr [esp+0ch] ;data mov eax,dword ptr [esp+04h] ;addr mov ecx,dword ptr [esp+08h] ;offset ror dx,8 mov word ptr [eax+ecx], dx ret 0ch ?_w2@MEMORY@@UAEXPAEKG@Z ENDP PUBLIC ?_w4@MEMORY@@UAEXPAEKK@Z ?_w4@MEMORY@@UAEXPAEKK@Z PROC mov edx,dword ptr [esp+0ch] ;data mov eax,dword ptr [esp+04h] ;addr mov ecx,dword ptr [esp+08h] ;offset bswap edx mov dword ptr [eax+ecx],edx ret 0ch ?_w4@MEMORY@@UAEXPAEKK@Z ENDP end |
;AMD64 ; Class MEMORY ; _r1/_r2/_r4/_w1/_w2/_w4 ; ; char MEMORY::_r1(char *addr,long offset) ; short MEMORY::_r2(char *addr,long offset) ; long MEMORY::_r4(char *addr,long offset) ; void MEMORY::_w1(char *addr,long offset,char data) ; void MEMORY::_w2(char *addr,long offset,short data) ; void MEMORY::_w4(char *addr,long offset,long data) ; ; rcx thisポインタ ; rdx 第一引数 ; r8 第二引数 ; r9 第三引数 ; rax 返値 _TEXT SEGMENT PUBLIC ?_r1@MEMORY@@UEAAEPEAEK@Z ?_r1@MEMORY@@UEAAEPEAEK@Z PROC mov al,byte ptr [rdx+r8] ret 0 ?_r1@MEMORY@@UEAAEPEAEK@Z ENDP PUBLIC ?_r2@MEMORY@@UEAAGPEAEK@Z ?_r2@MEMORY@@UEAAGPEAEK@Z PROC mov ax,word ptr [rdx+r8] ror ax,8 ret 0 ?_r2@MEMORY@@UEAAGPEAEK@Z ENDP PUBLIC ?_r4@MEMORY@@UEAAKPEAEK@Z ?_r4@MEMORY@@UEAAKPEAEK@Z PROC mov eax,dword ptr [rdx+r8] bswap eax ret 0 ?_r4@MEMORY@@UEAAKPEAEK@Z ENDP PUBLIC ?_w1@MEMORY@@UEAAXPEAEKE@Z ?_w1@MEMORY@@UEAAXPEAEKE@Z PROC mov byte ptr [rdx+r8],r9b ret 0 ?_w1@MEMORY@@UEAAXPEAEKE@Z ENDP PUBLIC ?_w2@MEMORY@@UEAAXPEAEKG@Z ?_w2@MEMORY@@UEAAXPEAEKG@Z PROC ror r9w,8 mov word ptr [rdx+r8],r9w ret 0 ?_w2@MEMORY@@UEAAXPEAEKG@Z ENDP PUBLIC ?_w4@MEMORY@@UEAAXPEAEKK@Z ?_w4@MEMORY@@UEAAXPEAEKK@Z PROC bswap r9d mov dword ptr [rdx+r8],r9d ret 0 ?_w4@MEMORY@@UEAAXPEAEKK@Z ENDP _TEXT ENDS END |
AMD64 | コマンドライン | ml64 -c -Zi "-Fl$(IntDir)/device/memory/$(InputName).lst" "-Fo$(IntDir)/device/memory/$(InputName).obj" "$(InputPath)" |
Win32 | コマンドライン | ml -c -Zi "-Fl$(IntDir)/device/memory/$(InputName).lst" "-Fo$(IntDir)/device/memory/$(InputName).obj" "$(InputPath)" |