Я написал программу на языке C. В этой программе ко мне мог получить доступ указатель на определенный адрес, и код операции мог его распечатать. Я использовал этот метод для написания самомодифицирующегося кода. Я сделал это в 8086 архитектура. Я хочу, чтобы он работал на микроконтроллере PIC18F2550. Я использую Mplab IDE 8.92 с Mplab C18 3.46. Я никогда не делал этого раньше с микроконтроллером. В отличие от 8086 Здесь у меня нет доступа к коду операции! Указатель - это адрес кода операции. Однако возвращаемое значение - 0X00! Это пример кода.
#include <stdio.h>
#include <stdlib.h>
void fsub(void){
int a,b;
a=3;b=5;
a-=b;
printf("a-b=%d\n",a);
}
void fadd(void)
{
int a,b;
a=3;b=5;
a+=b;
printf("a+b=%d\n",a);
}
void retadd(void);
void main()
{
int i;
unsigned char *instSub,*instAdd;
unsigned char instructionSub[2];
void *retadd_addr=(void*)retadd;
retadd();
instSub=(unsigned char*)retadd_addr;
instAdd=(unsigned char*)retadd_addr+2;
printf("%x\n", *instSub);
printf("%x\n", *instAdd);
while(1);
}
void retadd(void)
{
fsub();
fadd();
}
! [изображение с mplab] на этом изображении показаны значения 1