- 论坛徽章:
- 0
|
打个比方,第一列是地址,第二列是地址对应的数值
后面是原始的汇编码(不用管它)
我把地址和数值全都算出来了,问题是,我如何能把数值和地址写入一个新建的obj文件中(二进制形式,就像附件中的memcpy.o文件那样,像是memory dump)
这个问题比较傻,但是我第一次接触这种问题,所以望各位大侠指点了,再次感谢
0000 00100000 ldc 0x1000
0001 0000000B a2sp
0002 FFFFFE0A adj -2
0003 00000A00 ldc 10
0004 00000103 stl 1
0005 00002000 ldc src
0006 00000003 stl 0
0007 00002C00 ldc dst
0008 0000010D call memcpy
原帖由 lenovo 于 2008-1-8 10:09 发表 ![]()
fwrite(buffer, 1, len, fp);
你的指令在buffer中存放,len是buffer的长度。
没有什么特殊之处呀。
非常感谢,我试了一下,处理正数可以,但负数会变成奇怪的符号,不知道为什么
比如
int a=6;
...
fwrite(&a,sizeof(int),1,fp);
fp指向的文件中hex码是对的,但是如果是-6就不对了,转换成补码,long int又会溢出.
不知道为什么,这个方面我几乎没什么经验
刚才试了很久,并不是一个简单问题,obj文件的创建,没有我想象中那么简单
比如把-1写入obj,hex码应该是FFFFFFFF,但是我用fwrite无法做到这一点,为了避免溢出等等条件我做了很大努力,但在写入时还是达不到要求
现在就剩一个问题,简单些说,就是:
如果我有一个long int为-1
我如何把它写入obj,并且hexediter打开可以看见hex码为FFFFFFFF?
一晚上把其他模块都搞定了,就是这里卡住,代码超过1000行了...
这学校计算机专业难度在英国仅次牛剑...题目也不是那么容易就搞定的
[ 本帖最后由 kelela 于 2008-1-9 15:50 编辑 ] |
|