macOS組合語言摘要

2021-08-04 06:45:30 字數 2188 閱讀 4992

int global_value = 1;

static

int static_value = 2;

void foo()

int global_value_uninitialized;

static

int static_value_uninitialized;

int main()

在terminal中執行

cc -arch i386 -s hello.cpp
得到組合語言

.section    __text,__text,regular,pure_instructions

.globl __z3foov

.p2align 4, 0x90

__z3foov:

pushl %ebp

movl %esp, %ebp

calll l0

$pbl0

$pb:

popl %eax

movl $3, __zl12static_value-l0

$pb(%eax)

popl %ebp

retl

.globl _main

.p2align 4, 0x90

_main:

pushl %ebp

movl %esp, %ebp

calll l1$pb

l1$pb:

popl %eax

xorl %ecx, %ecx

movl $4, __zl26static_value_uninitialized-l1$pb(%eax)

movl %ecx, %eax

popl %ebp

retl

.section __data,__data

.globl _global_value

.p2align 2

_global_value:

.long 1

.p2align 2

__zl12static_value:

.long 2

.globl _global_value_uninitialized

.zerofill __data,__common,_global_value_uninitialized,4,2

.zerofill __data,__bss,__zl26static_value_uninitialized,4,2

可以看到**放在(__text,__text)

global_value和static_value放在(__data,__data)

global_value_uninitialized放在(__data,__common)

static_value_uninitialized放在(__data,__bss)

**

.section    __text,__text,regular,pure_instructions
有個簡寫的等價directive

.text
**

.section    __data,__data
有個簡寫的等價directive

.data

**

.zerofill __data,__common,_global_value_uninitialized,4,2
有個簡寫的等價directive

.comm

_global_value_uninitialized,4

**

.zerofill __data,__bss,__zl26static_value_uninitialized,4,2
有個簡寫的等價directive

.lcomm __zl26static_value_uninitialized,4,2

組合語言 AT T組合語言

這兩天的pwn題環境都是在linux中,採用的組合語言是 at t 格式。之前學習的是intel格式的8086彙編,今天學習了下at t組合語言。基於x86 架構的處理器所使用的彙編指令一般有兩種格式 操作intel格式at t格式 暫存器命名 push eax pushl eax 常數 立即運算元...

組合語言複習摘要一 基礎知識

寫點摘要,來自王爽老師那本 組合語言 以前大二的時候看過一次,複習一下。1 儲存器 也就是我們平常所說的記憶體,指令和資料都是存放在儲存器當中。2 指令和資料 都儲存在儲存器中。注意,兩者只是應用上的概念,其實在儲存器中,兩者都是以二進位制存放的,對於計算機來說,沒有區別。3 儲存單元 儲存器被分成...

組合語言 彙編指令

功能 用來進行資料傳輸。以 mov a,b 為例,相當於a b。具有以下形式 mov 暫存器,資料 mov 暫存器,暫存器 mov 暫存器,記憶體單元 mov 記憶體單元,暫存器 mov 段暫存器,暫存器 功能 用來做加法。以 add a,b 為例,相當於a a b。具有的形式,和 mov 一樣。功...