MAME模拟器debug帮助文档汉化三(内存指令)

内存调试器指令

dasm

        将代码反汇编输出到文件中
find

        在模拟器内存中搜索数据
fill

        用指定的模式填充模拟内存
dump

        将模拟内存作为文本保存到文件中
strdump

       从模拟内存中保存带分隔符的字符串到一个文件中
save

        将模拟内存中的二进制数据保存到文件中
saver

        将二进制数据从内存区域保存到文件中
load

        将二进制数据从文件加载到模拟内存中
loadr

        将二进制数据从文件加载到内存区域
map

        将逻辑地址映射到相应的物理地址和处理程序
memdump

        将当前内存映射转储到文件中

dasm

dasm <filename>,<address>,<length>[,<opcodes>[,<CPU>]]

将程序内存反汇编保存为<filename>参数指定的文件。<address>参数指定开始反汇编的地址,<length>参数指定要反汇编的长度。范围<address>到<address>+<length>-1(含)将被反汇编到文件中。默认情况下,每行输出原始操作码数据。可选的<opcodes>参数是启用禁用此功能的布尔值。默认情况下,可见CPU的程序内存被反汇编。要反汇编不同CPU的程序内存,请使用可选的第五个参数指定它(有关详细信息,请参阅指定设备和地址空间)。

实例:

dasm venture.asm,0,10000

        为可见CPU反汇编地址0-ffff,包括原始操作码数据,到文件venture.asm。


dasm harddriv.asm,3000,1000,0,2

        将系统中第3个CPU(从0开始的索引)的地址3000-3fff反汇编到文件harddrive .asm,不带原始操作码数据。


find

f[ind][{d|i|o}] <address>[:<space>],<length>[,<data>[,…]]

在内存中搜索指定的数据序列。<address>是开始搜索的地址,后面的可选参数为设备或地址空间(有关详细信息,请参阅指定设备和地址空间);<length>指定要搜索的内存量。如果未指定地址空间,命令后缀将设置地址空间:find默认为设备公开的第一个地址空间,findd默认为索引为1的空间(data),findi默认为具有索引2的空间(I/O),findo默认为带有索引3的空间(opcodes)。

<data>可以是带引号的字符串、数值或表达式,也可以是通配符"?"。默认情况下,字符串表示字节(byte)大小的搜索;默认情况下,使用地址空间的本机字(word)大小搜索非字符串数据。要覆盖非字符串数据的搜索大小,可以在值前面加上b以强制字节(byte)大小的搜索,对于字(word)大小的搜索可以加上w,对于双字(dword)大小的,可以加上d,对于四字大小的可以加上q。忽略会传播到后续的值,因此如果要搜索一个字(word)序列,只需在第一个值前面加上w。还要注意,可以混合大小以执行更复杂的搜索。

将搜索整个范围<address>到<address>+<length>-1(含),以查找序列,并显示所有出现的情况。

实例:

find 0,10000,"HIGH SCORE",0

在可见CPU的程序空间的地址范围0-ffff中搜索字符串“HIGH SCORE”后接一个0字节。


find 300:tms9918a,100,w.abcd,4567

在设备暴露的第一个地址空间,绝对标签:tms9918a的300-3ff范围内搜索字(word)大小的值abcd和字(word)大小的值4567。


find 0,8000,"AAR",d.0,"BEN",w.0

在地址范围0000-7fff中搜索字符串“AAR”,后跟一个大小为双字(dword)的0,后跟字符串“BEN”,后接一个字(word)大小的0。
fill

fill[{d|i|o}] <address>[:<space>],<length>[,<data>[,…]]

用提供的数据序列的副本覆盖内存块。<address>指定开始写入的地址,后面可选参数为设备或地址空间(有关详细信息,请参阅指定设备和地址空间);<length>指定要填充多少内存。如果未指定地址空间,命令后缀将设置地址空间:fill默认为设备公开的第一个地址空间,fill默认是索引为1的空间(data),filli默认是索引2的空间(I/O),fillo默认为索引为3的空间(opcodes)。

<data>可以是带引号的字符串,也可以是数值或表达式。默认情况下,使用地址空间的本机用字(word)大小写入非字符串数据。要覆盖非字符串数据的数据大小,可以在值前面加上b以强制字节(byte)大小的填充,w表示字(word)大小的填充、d表示双字(dword)大小的填写,q表示四字(qword)大小填充。忽略会传播到后续的值,因此,如果要用一系列单词填充,只需在第一个值前面加上w。另外请注意,可以混合大小以执行更复杂的填充。如果出现页面错误,或者如果序列或字符串的一部分超出<address>+<length>-1,则填充操作可能会被截断。


dump

dump[{d|i|o}] <filename>,<address>[:<space>],<length>[,<group>[,<ascii>[,<rowsize>]]]

将内存转储到<filename>参数指定的文本文件。<address>指定要从中开始转储的地址,后面可选参数为设备或地址空间(有关详细信息,请参阅指定设备和地址空间);<length>指定要转储多少内存。如果未指定地址空间,命令后缀将设置地址空间:dump默认为设备公开的第一个地址空间,dump默认是索引为1(data)的空间,dumpi默认是索引2(I/O)的空间;dumpo默认是索引3(opcodes)的空间。

范围<address>到<address>+<length>-1(含)将被输出到文件。默认情况下,数据将使用地址空间的字(word)大小输出。您可以通过指定<group>参数来覆盖这一点,该参数可用于将数据分组为1、2、4或8字节块。可选的<ascii>参数是一个布尔值,用于启用或禁用每行右侧ascii字符的输出(默认情况下启用)。可选的<rowsize>参数以地址为单位指定每行上的数据量(默认为16字节)。

实例:

dump venture.dmp,0,10000

        从可见CPU的程序空间以字节(byte)的块(包括ASCII数据)将地址0-ffff转储到文件venture.dmp。


dumpd harddriv.dmp,3000:3,1000,4,0

将数据内存地址3000-3fff从系统中的第4个CPU(从0开始的索引)以4字节(4byte)的块(不含ASCII数据)转储到文件harddrive .dmp。

dump vram.dmp,0:sms_vdp:videoram,4000,1,false,8

将带有绝对标记路径:sms_vdp的视频空间地址0000-3fff字节(byte)块,不包含ASCII数据,每行8字节(8byte),转储到文件vram.dmp。


strdump

strdump[{d|i|o}] <filename>,<address>[:<space>],<length>[,<term>]

将内存转储到<filename>参数指定的文本文件。<address>指定开始转储的地址,后面可选参数为设备或地址空间(有关详细信息,请参阅指定设备和地址空间);<length>指定要转储多少内存。如果未指定地址空间,命令后缀将设置地址空间:strdump默认为设备公开的第一个地址空间,strdump缺省为索引为1的空间(data),strdumpi默认为索引为2的空间(I/O),而strdumpo默认为索引3的空间(opcodes)。

默认情况下,数据将被解释为一系列以NUL结尾的(ASCIIZ)字符串,转储将每行有一个字符串,C样式转义序列将用于不表示可打印ASCII字符的字节。可选的<term>参数可用于指定不同的字符串终止符字符。


save

save[{d|i|o}] <filename>,<address>[:<space>],<length>

将原始内存保存到<filename>参数指定的二进制文件中。<address>指定开始保存的地址,后面可选参数为设备或地址空间(有关详细信息,请参阅指定设备和地址空间);<length>指定要保存多少内存。如果未指定地址空间,命令后缀将设置地址空间:save默认为设备公开的第一个地址空间,save默认值为索引为1的空间(data),savei默认值为具有索引2的空间(I/O),save O默认值为带有索引3的空间(opcodes)。

The range <address> through <address>+<length>-1, inclusive, will be output to the file.

范围<address>到<address>+<length>-1(含)将被输出到文件。

实例:

save venture.bin,0,10000

        将地址0-ffff从当前CPU的程序空间保存到二进制文件venture.bin


saved harddriv.bin,3000:3,1000

        将系统中第4个CPU(从0开始的索引)的数据内存地址3000-3fff保存到二进制文件harddriv.bin。


save vram.bin,0:sms_vdp:videoram,4000

使用绝对标记路径:sms_vdp将设备的视频内存空间地址0000-3fff保存到二进制文件vram.bin。


saver

saver <filename>,<address>,<length>,<region>

将<region>参数指定的内存区域的原始内容保存到<filename>参数指定指定的二进制文件中。区域标记遵循与设备标记相同的规则(请参阅指定设备和地址空间)。<address>指定开始保存的地址,<length>指定要保存的内存量。范围<address>到<address>+<length>-1(含)将被输出到文件。

实例:

saver data.bin,200,100,:monitor

        保存:monitor区域地址200-2ff到二进制文件data.bin。
saver cpurom.bin,1000,400,.

使用与可见CPU相同的标记将内存区域中的地址1000-13ff保存到二进制文件cpurom.bin。


load

load[{d|i|o}] <filename>,<address>[:<space>][,<length>]

从<filename>参数指定的二进制文件加载原始内存。<address>指定要开始加载到的地址,后面的可选参数为设备或地址空间(有关详细信息,请参阅指定设备和地址空间);<length>指定要加载多少内存。如果未指定地址空间,命令后缀将设置地址空间:load默认为设备公开的第一个地址空间,loadd默认为索引为1的空间(data),loadi默认为索引2的空间(I/O),loado默认为索引3的空间(opcodes)。

范围<address>到<address>+<length>-1(含)将从文件中读取。如果省略了<length>,如果它为零,或者它大于文件的总长度,则将加载文件的全部内容,但不会加载更多内容。

请注意,这与从调试器内存视图写入地址空间或在调试器表达式中使用b@、w@、d@或q@内存访问器的效果相同。只读存储器不会被覆盖,写入I/O地址可能会产生超出设置寄存器值的影响。

实例:

load venture.bin,0,10000

把二进制文件venture.bin的内容加载到当前CPU程序空间中的地址0-ffff。


loadd harddriv.bin,3000,1000,3

把二进制文件harddriv.bin的内容加载到系统中的第4个CPU(从0开始的索引)程序空间中的地址3000-3fff。


load vram.bin,0:sms_vdp:videoram

把二进制文件vram.bin的内容加载到绝对路径为sms_vdp:videoram内存空间中的地址0000。


loadr

loadr <filename>,<address>,<length>,<region>

用<filename>参数指定的二进制文件中的原始数据加载<region>指定的内存区域的内存。区域标签遵循与设备标签相同的规则(见指定设备和地址空间)。<address>指定了要开始加载的地址,<length>指定了要加载多少内存。<address>到<address>+<length>-1(含)的范围将从文件中读入。如果<length>为零,或者大于文件的总长度,文件的全部内容将被加载,但不会超过文件大小。

实例:

loadr data.bin,200,100,:monitor

        把二进制文件data.bin的内容载入到:monitor区域空间的200-2ff的地址里


loadr cpurom.bin,1000,400,.

        把二进制文件cpurom.bin的内容载入到当前可见CPU的地址1000-13ff中。


map

map[{d|i|o}] <address>[:<space>]

将一个逻辑内存地址映射到相应的物理地址,以及报告处理程序的名称。地址后面可以选择使用冒号和设备和/或地址空间(详见指定设备和地址空间)。如果没有指定地址空间,命令的后缀会设置地址空间:map默认为设备暴露的第一个地址空间,mapd默认为索引1的空间(data),mapi默认为索引2的空间(I/O),mapo默认为索引3的空间(opcodes)。

实例:

map 152d0

给出可见CPU的程序存储器中逻辑地址152d0的物理地址和处理程序名称。


map 107:sms_vdp

为设备的第一个地址空间中的逻辑地址107提供物理地址和处理程序名称,其绝对标签路径为:sms_vdp。


memdump

memdump [<filename>,[<device>]]

将当前的内存映射转储到<filename>指定的文件中,如果省略,则转储到memdump.log。如果<device>被指定(见指定设备和地址空间),只有设备树中以该设备为根的部分的内存映射将被转储。

实例:

memdump mylog.log

将系统中所有设备的内存映射转储到文件mylog.log中。


memdump

 将系统中所有设备的内存映射转储到memdump.log文件中。


memdump audiomaps.log,audiopcb

将绝对标签路径为:audiopcb的设备及其所有子设备的内存映射转储到文件audiomaps.log。


memdump mylog.log,1

将系统中第二个CPU设备(从0开始索引)及其所有子设备的内存映射转储到文件mylog.log。

猜你喜欢

转载自blog.csdn.net/m0_50114967/article/details/127556298