用自己的語言解釋一段簡單的彙編

2022-05-15 16:45:05 字數 971 閱讀 3709

.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所指向的物件,是嗎?那麼我的這個推理,這個推理該用什麼理論來解釋呢,或者定義什麼的,誰讓我消...