kermit配置

反汇编
wuyingqiang@ty-kf1:~/1$ gcc hello.c -o app
wuyingqiang@ty-kf1:~/1$ gcc hello.c
-g -o app
-g参数决定反汇编之后的文件中,还能否看到c代码
wuyingqiang@ty-kf1:~/1$ objdump -dSsx app > file
两种情况下, cat file。 查看文件内容,c代码出会不一样。
wuyingqiang@ty-kf1:~/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.s AREA MYADD, CODE, READONLY ;ENTRY EXPORT myadd myadd ADD R2, R0, R1 MOV R0, R2 MOV R15, R14;MOV PC, LR END -------------------------- 汇编调用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.s AREA FUN ,CODE, READONLY IMPORT add EXPORT fun fun add r0, r0, #1 add r1, r1, #1 mov r8, r14 bl add mov r5, r0 mov r14, r8 mov pc, r14 end ---------------------------------- 内嵌汇编 //main.c #include <stdio.h> int main(void) { __asm { mrs r5, CPSR bic r5, r5, #0xf orr r5, r5, #0x2 msr CPSR_cxsf, r5 } printf("hello\n"); return 0; }
计算机存储介质
DRAM:内存,动态随机存储器。
SRAM:cache缓存(cpu内部),
静态
随机存储器。
cpu内部有
IROM:只读存储
IRAM:可读可写
bootloader程序会使用到。