Line 43... |
Line 43... |
|
|
int main(int argc,char *argv[])
|
int main(int argc,char *argv[])
|
{
|
{
|
FILE *infile,*outfile,*txtfile;
|
FILE *infile,*outfile,*txtfile;
|
unsigned char *buf,*code;
|
unsigned char *buf,*code;
|
long size;
|
long size,stack_pointer;
|
unsigned long code_offset,index,name,offset,length,d,i,gp_ptr;
|
unsigned long code_offset,index,name,offset,length,d,i,gp_ptr;
|
|
|
printf("test.exe -> code.txt & test2.exe\n");
|
printf("test.exe -> code.txt & test2.exe\n");
|
infile=fopen("test.exe","rb");
|
infile=fopen("test.exe","rb");
|
if(infile==NULL) {
|
if(infile==NULL) {
|
Line 149... |
Line 149... |
printf(".sbss=0x%x .bss_end=0x%x\n",
|
printf(".sbss=0x%x .bss_end=0x%x\n",
|
header.sbss_offset,header.bss_offset+header.bss_length);
|
header.sbss_offset,header.bss_offset+header.bss_length);
|
set_low(code,8,header.sbss_offset);
|
set_low(code,8,header.sbss_offset);
|
set_low(code,12,header.bss_offset+header.bss_length);
|
set_low(code,12,header.bss_offset+header.bss_length);
|
|
|
|
/*Set stack pointer*/
|
|
stack_pointer=header.bss_offset+header.bss_length+512;
|
|
printf("Stack pointer=0x%x\n",stack_pointer);
|
|
set_low(code,16,stack_pointer);
|
|
|
/*write out code.txt*/
|
/*write out code.txt*/
|
outfile=fopen("test2.exe","wb");
|
outfile=fopen("test2.exe","wb");
|
txtfile=fopen("code.txt","w");
|
txtfile=fopen("code.txt","w");
|
for(i=0;i<=header.sdata_offset+header.sdata_length;i+=4) {
|
for(i=0;i<=header.sdata_offset+header.sdata_length;i+=4) {
|
d=load(code,i);
|
d=load(code,i);
|