1. 程式人生 > >ARM彙編:printf

ARM彙編:printf

#include <stdio.h>
int add3(int a, int b, int c)
{
	return a+b+c;
}
int main()
{
	//char* p="Hello world!";
	int a=1, b=2, c =3;
	printf("func printf: %d\n", a++);
	add3(a, b, c);
	return 0;
}


[email protected]:~/workspace/mickey/android/external/asmtest$ ~/workspace/mt6592_dev/android/prebuilts/gcc/linux-x86/arm/arm-linux-androideabi-4.6/bin/arm-linux-androideabi-objdump -D -s asmtest.o > asmtest2.asm

Contents of section .rodata.str1.4:
 0000 66756e63 20707269 6e74663a 2025640a  func printf: %d.
 0010 00000000       

Disassembly of section .text.add3:


00000000 <add3>:
   0: 1840      adds r0, r0, r1
   2: 1880      adds r0, r0, r2
   4: 4770      bx lr
   6: bf00      nop

Disassembly of section .text.startup.main:


00000000 <main>:
   0: 4803      ldr r0, [pc, #12]; (10 <main+0x10>)
   2: 2101      movs r1, #1
   4: b508      push {r3, lr}
   6: 4478      add r0, pc
   8:f7ff fffe bl0 <printf>
   c: 2000      movs r0, #0
   e: bd08      pop {r3, pc}
  10: 00000006 andeq r0, r0, r6


相關推薦

ARM彙編printf

#include <stdio.h>int add3(int a, int b, int c) { return a+b+c; } int main() { //char* p="Hello world!"; int a=1, b=2, c =3; pr

ARM彙編BNE和TST和BEQ

                                  ARM彙編:BNE和TST (1)例一:TST與BNE

ARM彙編MRS和MSR指令

                        ARM彙編:MRS和MSR指令 ARM中有兩條指令用於在狀態暫存器和通用暫存器之間傳送資料。 一:下面先來說說狀態暫存器

ARM彙編彙編中proc、endp、ret、near、far指令用法

   ARM彙編:彙編中proc、endp、ret、near、far指令用法 子程式名 PROC NEAR ( 或 FAR ) …… ret 子程式名 ENDP (1)NEAR屬性(段內近呼叫): 呼叫程式和子程式在同一程式碼段中,只能被相同程式碼段的其他程式呼叫;    FAR屬性(段間遠

ARM彙編左移shl、右移shr指令用法!

       ARM彙編:左移shl、右移shr指令用法 shl和shr是邏輯移位指令。 1.shl是邏輯左移指令,它的功能為: (1)將一個暫存器或記憶體單元中的資料向左移位; (2)將最後移出的一位寫入CF中; (3)最低位用0補充。 指令: mov al,0100

ARM彙編載入和儲存指令集(六大類)---LDR、LDRB、LDRH、STR、STRB、STRH

ARM的六大類指令集---LDR、LDRB、LDRH、STR、STRB、STRH ARM微處理器支援載入/儲存指令用於在暫存器和儲存器之間傳送資料,載入指令用於將儲存器中的資料傳送到暫存器,儲存指令則完成相反的操作。常用的載入儲存指令如下: —  LDR     字資料載

ARM彙編組合語言跳轉指令: JMP、JECXZ、JA、JB、JG、JL、JE、JZ、JS、JC、JO、JP 等

跳轉指令分三類: 一、無條件跳轉: JMP; 二、根據 CX、ECX 暫存器的值跳轉: JCXZ(CX 為 0 則跳轉)、JECXZ(ECX 為 0 則跳轉); 三、根據 EFLAGS 暫存器的標誌位跳轉, 這個太多了. 根據標誌位跳轉的指令: JE   ;等於則跳轉 J

ARM彙編之指令集的切換ARM切換到Thumb

概念 當使用bx跳轉指令,跳到一個奇數地址時,預設跳到這個奇數地址-1的位置,然後標誌位T位會置1,表示切換到Thumb指令集,所以我們引出下面這條指令,經常使用它來進行指令集的切換(r3隨意,任意暫存器即可,別用特殊暫存器) add r3, pc, #1 執行這條語句時,PC的

解密Arm中國全球最具影響力的芯片公司中國布局浮出水面

軟銀 10個 更多 acc 同時 自動 -a 進出口 資本市場 經濟觀察報 記者 陳伊凡 沈怡然 李華清 對於Arm與中國合資公司事宜,5月4日下午,Arm授權的代表郵件回復《經濟觀察報》稱:“合資公司目前剛開始運營”,“我們的重點是讓這

Arm虛擬化效能和構架分析(3)

                     構架的改進 為了在真實應用workload上得到更低的VM到hypervisor延遲,我們需要對arm硬體虛擬化支援做些改進。根據我們的設計,實

Arm虛擬化效能和構架分析(2)

微信公眾號 mindshare思享   如下圖所示,Xen和KVM採用不同的方式使用arm的硬體虛擬化支援。 Xen作為type1 hypervisor設計比較容易直接使用arm構架提供的功能,直接將hypervisor運行於EL2,將VM的users pace

ARM彙編-從內嵌彙編開始

這是一篇Hello World的入門文章 開始 對於基於ARM的RISC處理器,GNU C編譯器提供了在C程式碼中內嵌彙編的功能。這種特性提供了C程式碼沒有的功能,比如手動優化軟體關鍵部分的程式碼、使用相關的處理器指令。  __asm__ __volatile__("hlt")

ARM彙編偽指令 .word

ARM彙編偽指令 .word  經常碰到那些以“.”打頭的一些令人頭疼的偽指令,  至於.globl _start .balign .align .data .text等等就算了,最最bt的如下:  _unde

常用的ARM彙編指令

一. 帶點的(一般都是ARM GNU偽彙編指令)   1. ".text"、".data"、".bss" 依次表示的是 “以下是程式碼段”, “以下是初始化資料段”, “以下是未初始化資料段”。 2.".global" 定義一個全

ARM彙編中LDR偽指令和LDR指令

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

彙編AT&T與NASM的區別

暫存器: 通用暫存器:EAX,EBX,ECX,EDX,  用於操作資料; AX,BX,CX,DX,暫存器的16位版本; AH,BH,CH,DH,AL,BL,CL,DL暫存器的8位高位和低位位元組; 段暫存器:CS,SS,DS,ES,FS,GS,16位暫存器,存放著,記憶體地

ARM彙編:偽指令DATA和EQU的區別

                      ARM彙編:偽指令DATA和EQU的區別   1、EQU 指令 定義:用於將一個數值或暫存器名賦給一個指定的符號名。 格

彙編氣泡排序

 求的一個數組的最大值: .section .data data_items: .long 3,67,54,99 .section .text .globl _start _start: nop movl $0, %edi movl data_items(,%edi

ARM彙編.global .extern 和.text

在ARM彙編中,常搞不清.global和.extern的區別,下面就簡要闡述一下這兩個的區別。 1>.global .global關鍵字用來讓一個符號對連結器可見,可以供其他連結物件模組使用。 .global _start 讓_start符號成為可見的標示符,這樣連結器就知道跳

arm 彙編與c語言

1.text 2.global _start 3_start: 4        LDR        R0,=0X56000010 //表示把一個地址寫到某暫存器中 5 6 7&