原创 第72部分- Linux x86 64位彙編調用匯編庫

第72部分- Linux x86 64位彙編調用匯編庫 如果希望彙編語言函數和C以及C++程序一起工作,必須顯式的遵守C樣式的函數格式。 彙編語言函數的源代碼文件包含在編譯器命令行中。 例如: gcc -o exe xx.c xx.s x

原创 第13部分- Linux ARM彙編 移位操作

第13部分- Linux ARM彙編 移位操作 ARM語法中的 移位操作如下,也是尋址的一種方法。在尋址方法中還會看到。 寄存器移位尋址是ARM指令集特有的尋址方式,和寄存器尋址類似,只是操作前需要對寄存器操作數進行移位操作。 LSL:邏

原创 第3部分- Linux ARM彙編引言

第3部分- Linux ARM彙編 引言 爲什麼要學彙編 摘自書籍 Why should engineers and programmers spend time learning to program in assembly langu

原创 第17部分- Linux ARM彙編 交互的示例

第17部分- Linux ARM彙編 交互的示例 我們先來看個交互的示例。  32位 .data /* First message */ .balign 4 message1: .asciz "Hey, type a number: "

原创 第82部分- Linux x86 64位彙編 參考

第82部分- Linux x86 64位彙編 參考 NASM The Netwide Assembler: NASM NasmAssembly https://nasm.us/doc/nasmdoc4.html   ATT 《Profes

原创 第20部分- Linux ARM彙編 函數調用斐波那契數列實現

斐波那契數列64位示例 .data msg_input: .asciz "Please type a number: " scanf_fmt : .asciz "%d" msg_output: .asciz "Fibonacci n

原创 第80部分- Linux x86 64位彙編 使用文件

第80部分- Linux x86 64位彙編 使用文件 我們知道C或者C++進行程序設計有函數fopen/read/write。彙編中如何呢? 彙編語言程序中處理數據文件時必須使用特定的順序。通過Linux系統調用執行。 打開 先來按下o

原创 第2部分- Linux ARM彙編ARM指令集變化和優勢

第2部分- Linux ARM彙編ARM指令集變化和優勢 指令集變化 T32,A32和A64指令集與可能導致它們之間切換的事件之間的關係。 指令集架構調整 ARMv4及之前:只使用32位的ARM指令集。 ARMv4T,在32位ARM指令

原创 第7部分- Linux ARM彙編 X86和ARM64部分彙編差異

第7部分- Linux ARM彙編 X86和ARM64部分彙編差異   X86和ARM64部分彙編差異 x86 Mnemonic A64 Mnemonic Instruction MOVZX UXT Zero-Ext

原创 第26部分- Linux ARM彙編 浮點和向量

第26部分- Linux ARM彙編 浮點和向量   二進制浮點數是一個實數的近似表示,由三個部分組成:符號,尾數和指數。 1.01110 是20 + 2-2 + 2-3 + 2-4 = 1.43750(10) VFPv2支持兩個IEEE

原创 第21部分- Linux ARM彙編adrp指令

ADR指令作用:小範圍的地址讀取指令。ADR 指令將基於PC 相對偏移的地址值讀取到寄存器中。 原理:將有符號的21位的偏移,加上PC, 結果寫入到通用寄存器,可用來計算+/-1MB範圍的任意字節的有效地址。   ADRP作用:以頁爲單

原创 第11部分- Linux ARM彙編 執行分支

第11部分- Linux ARM彙編 執行分支 在32位的ARM架構系統中,通用寄存器中有一個寄存器比較特殊,就是r15,它也是PC寄存器。 PC是program counter。也叫做ip,instruction pointer。 當A

原创 第15部分- Linux ARM彙編 ARM32函數調用

第15部分- Linux ARM彙編 ARM32函數調用 函數調用需要遵循函數調用個規則,否則調用之後就無法再回來了。 ARM的規則是: Procedure Call Standard for the ARM Architecture 簡

原创 第1部分- Linux ARM彙編-ARM技術變遷演進和ARMv8-a架構

第1部分- Linux ARM彙編ARM技術變遷 關於ARM版本 先來看下ARM版本如下圖: Tips:Cortex-A53同樣是採取了ARMv8-A架構,能夠支持32位的ARMv7代碼和64位代碼的AArch64執行狀態。 ARM

原创 第25部分- Linux ARM彙編NEON基礎知識

第25部分- Linux ARM彙編NEON基礎知識 浮點指令除了VFP還有NEON。 NEON 支持整數、定點和單精度浮點 SIMD 運算。 NEON 是針對高級媒體和信號處理應用程序以及嵌入式處理器的  64/128 位混合  SIM