標籤:
kermit配置
反組譯碼
[email protected]:~/1$ gcc hello.c -o app
[email protected]:~/1$ gcc hello.c -g -o app
-g參數決定反組譯碼之後的檔案中,還能否看到c代碼
[email protected]:~/1$ objdump -dSsx app > file
兩種情況下, cat file。 查看檔案內容,c代碼出會不一樣。
[email protected]:~/1$ file app app: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.24, BuildID[sha1]=0xd32f8a05fb02a3bd91cbc3c43a358569a62aa21e, not stripped
c和彙編混合編程
ATPCS協議,彙編用寄存器傳參,參數個數在4個以內
x86中c語言利用棧來傳遞參數,從右向左依次壓棧。
c調用彙編//main.c#include <stdio.h>extern int myadd(int a, int b);int main(void){int a = 3;int b = 5;int c;c = myadd(a, b);printf("%d\n", c);return 0;}//myadd.sAREA MYADD, CODE, READONLY;ENTRYEXPORT myaddmyaddADD R2, R0, R1MOV R0, R2MOV R15, R14;MOV PC, LREND--------------------------彙編調用c//main.c#include <stdio.h>extern int fun(int a, int b);int add(int a, int b){return a+b;}int main(void){int res;int a = 3, b = 5;res = fun(a, b);printf("%d\n", res);return 0;}//fun.sAREA FUN ,CODE, READONLYIMPORT addEXPORT funfunadd r0, r0, #1add r1, r1, #1mov r8, r14bl addmov r5, r0mov r14, r8mov pc, r14end----------------------------------內嵌彙編//main.c#include <stdio.h>int main(void){__asm {mrs r5, CPSRbic r5, r5, #0xforr r5, r5, #0x2msr CPSR_cxsf, r5}printf("hello\n");return 0;}
電腦儲存介質
DRAM:記憶體,動態隨機儲存空間。SRAM:cache緩衝(cpu內部),靜態隨機儲存空間。cpu內部有IROM:唯讀儲存IRAM:可讀可寫bootloader程式會使用到。
GPIO編程
kermit配置/反組譯碼/c和彙編混合編程/電腦儲存介質/GPIO編程