BayGC/02


Top / BayGC / 02

マングリングとデマングリング

マングリングとデマングリングについて知識を深めました。

ソースコード

以下のようなソースコードを料理してみます。

void test()
{
}

void test(int a, int b)
{
}

int test(int c)
{
}

int main() {
	return 0;
}

アセンブラで出力

g++ -S 1.cpp
cat 1.s
	.file	"1.cpp"
	.text
	.align 2
.globl __Z4testv
	.def	__Z4testv;	.scl	2;	.type	32;	.endef
__Z4testv:
	pushl	%ebp
	movl	%esp, %ebp
	popl	%ebp
	ret
	.align 2
.globl __Z4testii
	.def	__Z4testii;	.scl	2;	.type	32;	.endef
__Z4testii:
	pushl	%ebp
	movl	%esp, %ebp
	popl	%ebp
	ret
	.align 2
.globl __Z4testi
	.def	__Z4testi;	.scl	2;	.type	32;	.endef
__Z4testi:
	pushl	%ebp
	movl	%esp, %ebp
	popl	%ebp
	ret
	.def	___main;	.scl	2;	.type	32;	.endef
	.align 2
.globl _main
	.def	_main;	.scl	2;	.type	32;	.endef
_main:
	pushl	%ebp
	movl	%esp, %ebp
	subl	$8, %esp
	andl	$-16, %esp
	movl	$0, %eax
	addl	$15, %eax
	addl	$15, %eax
	shrl	$4, %eax
	sall	$4, %eax
	movl	%eax, -4(%ebp)
	movl	-4(%ebp), %eax
	call	__alloca
	call	___main
	movl	$0, %eax
	leave
	ret

マングリング

デマングリング

MENU

now: 5

リンク


最新の20件
2018-10-07 2018-09-20 2018-09-03 2018-05-09 2017-09-29 2017-01-10 2016-12-11 2016-10-04 2016-08-14 2016-05-29 2015-12-28 2013-02-25 2013-02-21 2013-02-20 2013-02-12 2013-02-11 2013-02-10
最新の20件
2010-02-01 2010-01-31 2010-01-30 2010-01-29 2010-01-16

Counter: 7866, today: 2, yesterday: 2

リロード   新規 編集 凍結 差分 添付 複製 改名   トップ 一覧 検索 最終更新 バックアップ   ヘルプ   最終更新のRSS

Last-modified: 2008-03-28 (金) 15:47:54 (3887d);  Modified by mona
PukiWiki 1.4.6 Copyright © 2001-2005 PukiWiki Developers Team. License is GPL.
Based on "PukiWiki" 1.3 by yu-ji
Powered by PHP 5.2.17
HTML convert time to 0.017 sec.