日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

[ARM-assembly]-全局变量/静态全局变量/初始化/未初始化变量的存放位置分析

發布時間:2025/3/21 编程问答 20 豆豆
生活随笔 收集整理的這篇文章主要介紹了 [ARM-assembly]-全局变量/静态全局变量/初始化/未初始化变量的存放位置分析 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

我們從匯編來看,各種變量在內存中的存放位置

1、使用交叉編譯器將C語言轉換成匯編

寫一個C語言程序:

static int x; static int y = 10; int z; int w = 20;int main() {int s;s=x;s=y;s=z;s=w;return 0; }

(arm32)
使用交叉編譯器將其編譯成.o文件 : arm-linux-androideabi-gcc-4.9 -c main.c
使用objdump工具將.o反匯編:arm-linux-androideabi-objdump -d main.o

hehezhou@buildsrv-165:~/workspace/test/test1$ arm-linux-androideabi-objdump -D main.omain.o: file format elf32-littlearmDisassembly of section .text:00000000 <main>:0: e52db004 push {fp} ; (str fp, [sp, #-4]!)4: e28db000 add fp, sp, #08: e24dd00c sub sp, sp, #12c: e59f3054 ldr r3, [pc, #84] ; 68 <main+0x68>10: e08f3003 add r3, pc, r314: e59f2050 ldr r2, [pc, #80] ; 6c <main+0x6c>18: e08f2002 add r2, pc, r21c: e5922000 ldr r2, [r2]20: e50b2008 str r2, [fp, #-8]24: e59f2044 ldr r2, [pc, #68] ; 70 <main+0x70>28: e08f2002 add r2, pc, r22c: e5922000 ldr r2, [r2]30: e50b2008 str r2, [fp, #-8]34: e59f2038 ldr r2, [pc, #56] ; 74 <main+0x74>38: e7932002 ldr r2, [r3, r2]3c: e5922000 ldr r2, [r2]40: e50b2008 str r2, [fp, #-8]44: e59f202c ldr r2, [pc, #44] ; 78 <main+0x78>48: e7933002 ldr r3, [r3, r2]4c: e5933000 ldr r3, [r3]50: e50b3008 str r3, [fp, #-8]54: e3a03000 mov r3, #058: e1a00003 mov r0, r35c: e24bd000 sub sp, fp, #060: e49db004 pop {fp} ; (ldr fp, [sp], #4)64: e12fff1e bx lr68: 00000050 andeq r0, r0, r0, asr r06c: 0000004c andeq r0, r0, ip, asr #3270: 00000040 andeq r0, r0, r0, asr #32...Disassembly of section .data:00000000 <y>:0: 0000000a andeq r0, r0, sl00000004 <w>:4: 00000014 andeq r0, r0, r4, lsl r0Disassembly of section .bss:00000000 <x>:0: 00000000 andeq r0, r0, r0Disassembly of section .comment:00000000 <.comment>:0: 43434700 movtmi r4, #14080 ; 0x37004: 4728203a ; <UNDEFINED> instruction: 0x4728203a8: 2029554e eorcs r5, r9, lr, asr #10c: 2e392e34 mrccs 14, 1, r2, cr9, cr4, {1}10: 30322078 eorscc r2, r2, r8, ror r014: 31303531 teqcc r0, r1, lsr r518: 28203332 stmdacs r0!, {r1, r4, r5, r8, r9, ip, sp}1c: 72657270 rsbvc r7, r5, #112, 420: 61656c65 cmnvs r5, r5, ror #2424: 00296573 eoreq r6, r9, r3, ror r5Disassembly of section .ARM.attributes:00000000 <.ARM.attributes>:0: 00002a41 andeq r2, r0, r1, asr #204: 61656100 cmnvs r5, r0, lsl #28: 01006962 tsteq r0, r2, ror #18c: 00000020 andeq r0, r0, r0, lsr #3210: 45543505 ldrbmi r3, [r4, #-1285] ; 0xfffffafb14: 08040600 stmdaeq r4, {r9, sl}18: 12010901 andne r0, r1, #16384 ; 0x40001c: 15011404 strne r1, [r1, #-1028] ; 0xfffffbfc20: 18031701 stmdane r3, {r0, r8, r9, sl, ip}24: 1a011901 bne 46430 <w+0x4642c>28: Address 0x0000000000000028 is out of bounds.

(arm64)
使用交叉編譯器將其編譯成.o文件 : aarch64-linux-android-gcc-4.9 -c main.c
使用objdump工具將.o反匯編:aarch64-linux-android-objdump -D main.o

hehezhou@buildsrv-165:~/workspace/test/test1$ aarch64-linux-android-objdump -D main.omain.o: file format elf64-littleaarch64Disassembly of section .text:0000000000000000 <main>:0: d10043ff sub sp, sp, #0x104: 90000000 adrp x0, 0 <main>8: 91000000 add x0, x0, #0x0c: b9400000 ldr w0, [x0]10: b9000fe0 str w0, [sp,#12]14: 90000000 adrp x0, 0 <main>18: 91000000 add x0, x0, #0x01c: b9400000 ldr w0, [x0]20: b9000fe0 str w0, [sp,#12]24: 90000000 adrp x0, 4 <main+0x4>28: f9400000 ldr x0, [x0]2c: b9400000 ldr w0, [x0]30: b9000fe0 str w0, [sp,#12]34: 90000000 adrp x0, 4 <main+0x4>38: f9400000 ldr x0, [x0]3c: b9400000 ldr w0, [x0]40: b9000fe0 str w0, [sp,#12]44: 52800000 mov w0, #0x0 // #048: 910043ff add sp, sp, #0x104c: d65f03c0 retDisassembly of section .data:0000000000000000 <y>:0: 0000000a .word 0x0000000a0000000000000004 <w>:4: 00000014 .word 0x00000014Disassembly of section .bss:0000000000000000 <x>:0: 00000000 .word 0x00000000Disassembly of section .comment:0000000000000000 <.comment>:0: 43434700 .inst 0x43434700 ; undefined4: 4728203a .inst 0x4728203a ; undefined8: 2029554e .inst 0x2029554e ; undefinedc: 2e392e34 uqsub v20.8b, v17.8b, v25.8b10: 30322078 adr x24, 6441d <w+0x64419>14: 31303531 adds w17, w9, #0xc0d18: 28203332 stnp w18, w12, [x25,#-256]1c: 72657270 .inst 0x72657270 ; undefined20: 61656c65 .inst 0x61656c65 ; undefined24: 00296573 .inst 0x00296573 ; NYI hehezhou@buildsrv-165:~/workspace/test/test1$

2 以aarch64的匯編分析

(1)、可以看到帶有初始值的static int y = 10 和int w = 20 都存放在data段
未初始值的static int x在bss段

static int x; static int y = 10; int z; int w = 20; Disassembly of section .data: 0000000000000000 <y>:0: 0000000a .word 0x0000000a0000000000000004 <w>:4: 00000014 .word 0x00000014Disassembly of section .bss:0000000000000000 <x>:0: 00000000 .word 0x00000000

(2)、我們再來看匯編代碼

static int x; static int y = 10; int z; int w = 20;int main() {int s;s=x;s=y;s=z;s=w;return 0; } 0000000000000000 <main>:0: d10043ff sub sp, sp, #0x104: 90000000 adrp x0, 0 <main>8: 91000000 add x0, x0, #0x0c: b9400000 ldr w0, [x0]10: b9000fe0 str w0, [sp,#12]14: 90000000 adrp x0, 0 <main>18: 91000000 add x0, x0, #0x01c: b9400000 ldr w0, [x0]20: b9000fe0 str w0, [sp,#12]24: 90000000 adrp x0, 4 <main+0x4>28: f9400000 ldr x0, [x0]2c: b9400000 ldr w0, [x0]30: b9000fe0 str w0, [sp,#12]34: 90000000 adrp x0, 4 <main+0x4>38: f9400000 ldr x0, [x0]3c: b9400000 ldr w0, [x0]40: b9000fe0 str w0, [sp,#12]44: 52800000 mov w0, #0x0 // #048: 910043ff add sp, sp, #0x104c: d65f03c0 ret

總結

以上是生活随笔為你收集整理的[ARM-assembly]-全局变量/静态全局变量/初始化/未初始化变量的存放位置分析的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 尹人成人 | 色网站入口 | 女生下面流水视频 | www视频在线观看免费 | 精品少妇一区二区三区免费观 | 天天爽一爽 | 久久婷婷国产麻豆91天堂 | 国产高清网站 | 久久视频黄色 | 小优视频污 | 国产一级免费av | 青青操国产| 亚洲成人一区二区三区 | 偷拍视频一区二区 | 污色视频 | 少妇又紧又深又湿又爽视频 | 午夜寂寞自拍 | 本田岬av| 探花视频在线免费观看 | 最新国产网站 | 国产精品午夜一区二区 | 老湿机69福利 | 国产精品久久久久影院 | 国产精品久久久久无码av | 国产在线视频在线观看 | 国产涩涩| 国语播放老妇呻吟对白 | 成熟人妻av无码专区 | 国产亲伦免费视频播放 | 在线观看 一区 | 国产在线视频在线观看 | 清草视频 | 成人小视频在线播放 | 91亚色| 国产精品亚洲а∨天堂免在线 | 18视频网站在线观看 | 草逼视频网 | 国产淫视 | 裸体毛片 | 久青草视频在线 | 亚洲成人婷婷 | 亚洲免费视频一区 | 无码人妻精品一区二区三区温州 | 99亚洲天堂 | 特黄aaaaaaaaa毛片免费视频 | 日日干夜夜草 | 久久精品国产精品亚洲色婷婷 | 91欧美日韩国产 | 无码国模国产在线观看 | 久久久精品视频在线观看 | 直接看的av网站 | 欧美91成人网 | 欧美性大战久久久久xxx | 国产超碰自拍 | 日韩激情视频在线观看 | 欧美亚洲天堂 | 久久日韩精品 | 亚洲精品v | 国产黄色网页 | 91麻豆精品久久久久蜜臀 | www视频免费观看 | 亚洲欧美一区二区三区不卡 | 女同性恋一区二区三区 | 欧美亚洲色图视频 | 亚洲综合99 | 少妇一级淫片日本 | 美女扒开内裤让男人捅 | 日本伦理一区二区三区 | 日韩一卡二卡在线 | 黄色av网站在线观看 | 男人的天堂avav | 一本一道久久综合 | 亚洲精品国产精华液 | h片观看| 884aa四虎影成人精品一区 | 亚洲男人的天堂在线观看 | 国产成人看片 | 91网站在线免费看 | 老湿机69福利区午夜x片 | 就去色av | 国产精品一区二区三区四区视频 | 精品少妇视频 | 色屁屁影院www国产高清麻豆 | 麻豆免费在线视频 | 日本成人a | 亚洲午夜电影网 | 欧美91| 国产三级免费观看 | 日本国产精品视频 | 少妇伦子伦精品无吗 | 欧美日韩精品久久久 | 天天碰免费视频 | 日本成人在线一区 | 污网站在线观看免费 | 日韩久久一区二区 | 性高湖久久久久久久久aaaaa | 免费看国产曰批40分钟粉红裤头 | 亚洲在线影院 | 男人天堂av在线播放 |