.section .data
values:
.int 10, 15, 20, 25, 30, 35, 40, 45, 50, 55, 60
.section .text
.globl _start
_start:
nop ##空格 ,固定格式 為了gdb除錯
movl values, %eax ## eax=values[0]=10
movl $values, %edi ## $values 記憶體位址存放到edi
movl $100, 4(%edi) ## 十進位制立即數100到edi位址4位元組之後
movl $1, %edi ## 十進位制1到edi
movl values(, %edi, 4), %ebx ## 將values標籤第2個的4位元組到ebx
movl $1, %eax ## 立即數1到eax
int $0x80 ##退出
可以看出 本段程式最後的ebx值為100
.int 32位 乙個資料元素佔 4個位元組=記憶體乙個單元
分析:movl values, %eax 標籤values(也就是values陣列中的值)到暫存器eax;
movl $values, %edi 標籤values位址(數值10 的位址)到edi;也就是edi有了values陣列中的位址
movl $100, 4(%edi) edi暫存器位址後4個位元組,也就是第二個元素15被100替代
movl $1, %edi 重新賦值edi=1累加器
movl values(, %edi, 4), %ebx 在標籤values也就是values陣列找到下標為1的4個位元組的數值,實際就是100賦值到ebx
用自己的語言解釋一段簡單的彙編
section data values int 10,15,20,25,30,35,40,45,50,55,60 section text globl start start nop 空格 固定格式 為了gdb除錯 movl values,eax eax values 0 10 movl value...
一段簡單的ARM彙編分析
假設 段.text首位址為0x8054 錯誤的 示例 text code 32 global start start bl main 1.pc 0x8054,lr 0x0 b main push 2.pc 0x805c,lr 0x8058 bl func1 3.pc 0x8060,lr 0x8058...
一段關於物件引用的形象解釋
我們先看一段 dog void go dog smalldog void setname string dogname 引用變數d 引用變數smalldog smalldog d 那麼smalldog也指向d所指向的物件,是嗎?那麼我的這個推理,這個推理該用什麼理論來解釋呢,或者定義什麼的,誰讓我消...