Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/actionscript-3/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Assembly 如何从代码到十六进制再到asci_Assembly_Mips - Fatal编程技术网

Assembly 如何从代码到十六进制再到asci

Assembly 如何从代码到十六进制再到asci,assembly,mips,Assembly,Mips,我在读一个有人回答的问题: 他们提到 位置0x4024FFA4处的字符串读取43 4F 4D 50 55 54 45 52 00,当解释为ASCII时,可以将其解码到“计算机”。注意,每个地址的字节顺序意味着我们必须从右向左读取字节 我想看看他们是怎么把0x4024FFA4变成434F4D505554455200的。我不知道他们是怎么做到的。我能够使用asci表将十六进制代码输入计算机。但是我不知道字符串代码是什么,它非常简单。如果不观察正在运行的程序或至少反汇编的代码(如果字符串存储在静态位置

我在读一个有人回答的问题:

他们提到 位置0x4024FFA4处的字符串读取43 4F 4D 50 55 54 45 52 00,当解释为ASCII时,可以将其解码到“计算机”。注意,每个地址的字节顺序意味着我们必须从右向左读取字节


我想看看他们是怎么把0x4024FFA4变成434F4D505554455200的。我不知道他们是怎么做到的。我能够使用asci表将十六进制代码输入计算机。但是我不知道字符串代码是什么,它非常简单。如果不观察正在运行的程序或至少反汇编的代码(如果字符串存储在静态位置),就无法从指针(0x4024FFA4)获取字符

但一般来说,如果您有:

char*mystring

然后在gdb中检查mystring,例如,将打印指针,指针可以是任何东西(但在他们的例子中是上面的地址)。从那里,您可以通过检查打印位置的字节和以下地址((char)0x4024FFA4,(char)0x4024FFA5,等等)来获取字母


添加:在链接的帖子中,第一列显示地址0x4024FFA4处的内存。所以你就去那里读字符。

我不明白“字符串代码”是什么?字符串是“computer\0”,看起来像43 4F 4D 50 55 54 45 52 00。字符串存储在内存中的位置取决于程序的加载。字符串存储在内存中的“顺序”取决于体系结构。我相信x86/x64从右向左存储。但我如何从0x4024FFA4到43 4F 4D 50 55 54 45 52 00您如何从0x4024FFA4到43 4F 4D 50 55 54 45 52 00?您将转到标有地址0x4024FFA4的位置的第一列。在这里您可以看到0x504d4f43。由于这是以小尾端打印的单词,所以每个单词中的字节都是颠倒的,所以您以相反的顺序读取它们。0x50 | 4d | 4f | 43->0x | 43 | 4f | 4d | 50。。。转换为ASCII的是COMP。更高的地址印在上面。所以,0x52455455->字节的倒序->UTER,下一个字节是零(字符串的结尾)。啊,非常感谢我现在看到了它,你怎么知道你应该只读取前两个字符串并停在那里,而不是读取更少或读取更多。字符串总是以第一个零字节结尾,第三个字的第一个字节是0。