0
我用c語言編寫了一個程序。在這個程序中,我可以通過指向特定地址的指針訪問,操作碼可以打印它。我用這種方法編寫了自我修改代碼。我在8086架構中做了這個。 我希望它在微控制器PIC18F2550上運行。我正在使用Mplab IDE 8.92和Mplab C18 3.46.我之前從未使用微控制器完成過此操作。 與8086不同,這裏我沒有訪問操作碼!指針是操作碼的地址。然而,返回值是0X00!這是一個代碼示例在PIC18中修改操作碼
#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
可能更多解釋 – user3161225
有沒有辦法訪問操作碼? – user3161225
@ user3161225您可以通過特殊的函數調用訪問操作碼。您無法通過void * retadd_addr =(void *)retadd獲取函數的地址。查看「哈佛架構」鏈接或更好:訪問www.microchip.com並在PIC18F2550上搜索文檔。 – chux