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 一樣。功...