C指標原理 5

2021-06-19 15:10:48 字數 942 閱讀 1759

[plain]view plain

copy

print?

.section .data  

myvalue:  

.byte 67,68,69,70,0  

mygs:  

.asciz "%c\n"  

.section .text  

.globl main  

main:  

#基位址(偏移位址[必須為暫存器],資料元素變址,資料元素長度[必須為暫存器],)  

#基位址+偏移位址+資料元素變址*資料元素長度  

movl $2,%ecx  

movl myvalue(,%ecx,1),%ebx #將myvalue的變址為2,長度為1的資料值移到ebx中  

push %ebx  

push $mygs      

call printf  

push $0  

call exit  

這段**將輸出ascii碼為69的字元「e」

有2種方式,能以變址和基址結構的方式訪問記憶體

1)基位址(偏移位址[必須為暫存器],資料元素變址,資料元素長度[必須為暫存器],)

2)基位址+偏移位址+資料元素變址*資料元素長度

上面**採用了第1種方式:

movl $2,%ecx

movl myvalue(,%ecx,1),%ebx

myvalue這個變數的內容是:67,68,69,70,0

%ecx暫存器的值是資料元素變址,是2,資料元素長度是1

67所在記憶體位址加上變址2,就是myvalue的以1個位元組為單位組成的5個元素中,第3個元素的位置

movl myvalue(,%ecx,1),%ebx 將第3個元素e的ascii碼放在ebx暫存器中,然後入棧,做為printf的引數

**:

C指標原理 6

內聯彙編的重要性體現在它能夠靈活操作,而且可以使其輸出通過 c 變數顯示出來。因為它具有這種能力,所以 asm 可以用作彙編指令和包含它的 c 程式之間的介面。簡單得說,內聯彙編,就是可以讓程式設計師在c語言中直接嵌入彙編 並與彙編 互動c程式中的c表示式,享受彙編的高執行效率。內聯彙編的格式是直接...

C指標原理 12

2 擴充計算器 加入對括號和注釋的支援,首先修改flex 檔案,在第二部分加入更多的詞法規則 對於注釋直接忽略 忽略注釋 然後,修改bison term number abs term leftbracket exp rightbracket 我們的注釋以 表示 測試結果 myhaspl myhas...

C指標原理(18) C指標基礎

5 指標陣列 指標陣列就是陣列裡存放的是指標。include int main void for i 0 i 10 i return 1 上面定義了乙個指標陣列,陣列的每個元素都是指標,每個指標指向x陣列的相應元素。其中,p x為指標陣列,通過for迴圈中的p x i x i完成指標陣列每個元素的賦...