XCode Version 15.4 (15F31d)。编译选项是模拟器,iPhone15Pro,Release。
Swift 类型是强而有力的, 尽管只有六个。不像其他语言有很多内嵌类型, Swift 只有六个。
四个命名类型: 协议, 枚举, 结构体, 类。两个复合类型: 元组, 函数。
你可能认为还有其他基本类型—比如 Bool, Int, UInt, Float, Double, Character, String, Array, Set, Dictionary, Optional, 等等。然后事实是, 这些实际上是建立在命名类型上的。属于 Swift 标准库的部分。
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
}
}
void __cdecl -[ViewController viewDidLoad](_TtC11hello_swift14ViewController *self, SEL a2)
{
objc_super v2; // [xsp+0h] [xbp-20h] BYREF
v2.receiver = self;
v2.super_class = (Class)type metadata accessor for ViewController(self, a2);
-[ViewController viewDidLoad](&v2, "viewDidLoad");
}
override func viewDidLoad() {
super.viewDidLoad()
let myIntVariable1 = 100
print(myIntVariable1)
}
void __cdecl -[ViewController viewDidLoad](_TtC11hello_swift14ViewController *self, SEL a2)
{
id v2; // x19
__int64 v3; // x0
__int64 v4; // x20
objc_super v5; // [xsp+0h] [xbp-20h] BYREF
v5.receiver = self;
v5.super_class = (Class)type metadata accessor for ViewController(self, a2);
v2 = objc_retain(v5.receiver);
-[ViewController viewDidLoad](&v5, "viewDidLoad");
v3 = __swift_instantiateConcreteTypeFromMangledName(&demangling cache variable for type metadata for _ContiguousArrayStorage<Any>);
v4 = swift_allocObject(v3, 64LL, 7LL);
*(_OWORD *)(v4 + 16) = xmmword_100005740;
*(_QWORD *)(v4 + 56) = &type metadata for Int;
*(_QWORD *)(v4 + 32) = 100LL;
print(_:separator:terminator:)(v4, 32LL);
objc_release(v2);
swift_release(v4);
}
导入swift.py插件脚本
void __cdecl -[ViewController viewDidLoad](_TtC11hello_swift14ViewController *self, SEL a2)
{
id v2; // x19
__int64 v3; // x0
__int64 v4; // x20
objc_super v5; // [xsp+0h] [xbp-20h] BYREF
Swift::String v6; // 0:x1.16
Swift::String v7; // 0:x3.16
v5.receiver = self;
v5.super_class = (Class)type metadata accessor for ViewController(self, a2);
v2 = objc_retain(v5.receiver);
-[ViewController viewDidLoad](&v5, "viewDidLoad");
v3 = __swift_instantiateConcreteTypeFromMangledName(&demangling cache variable for type metadata for _ContiguousArrayStorage<Any>);
v4 = swift_allocObject(v3, 64LL, 7LL);
*(_OWORD *)(v4 + 16) = xmmword_100005740;
*(_QWORD *)(v4 + 56) = &type metadata for Int;
*(_QWORD *)(v4 + 32) = 100LL;
v6._countAndFlagsBits = 32LL;
v6._object = (void *)0xE100000000000000LL;
v7._countAndFlagsBits = 10LL;
v7._object = (void *)0xE100000000000000LL;
print(_:separator:terminator:)((Swift_ArrayAny *)v4, v6, v7);
objc_release(v2);
swift_release(v4);
}
__const:0000000100005740 ; ===========================================================================
__const:0000000100005740
__const:0000000100005740 ; Segment type: Pure data
__const:0000000100005740 AREA __const, DATA, READONLY, ALIGN=4
__const:0000000100005740 ; ORG 0x100005740
__const:0000000100005740 xmmword_100005740 DCB 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0
__const:0000000100005740 ; DATA XREF: -[ViewController viewDidLoad]+58↑o
__const:0000000100005740 ; -[ViewController viewDidLoad]+5C↑r ...
__const:0000000100005750 aHelloSwift DCB "hello_swift",0 ; DATA XREF: __constg_swiftt:module descriptor ↓o
__const:000000010000575C aViewcontroller DCB "ViewController",0 ; DATA XREF: __constg_swiftt:nominal type descriptor for ViewController↓o
__const:000000010000576B ALIGN 0x10
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
print("MyStruct value:")
}
}
void __cdecl -[ViewController viewDidLoad](_TtC11hello_swift14ViewController *self, SEL a2)
{
id v2; // x19
__int64 v3; // x0
__int64 v4; // x20
objc_super v5; // [xsp+0h] [xbp-20h] BYREF
v5.receiver = self;
v5.super_class = (Class)type metadata accessor for ViewController(self, a2);
v2 = objc_retain(v5.receiver);
-[ViewController viewDidLoad](&v5, "viewDidLoad");
v3 = __swift_instantiateConcreteTypeFromMangledName(&demangling cache variable for type metadata for _ContiguousArrayStorage<Any>);
v4 = swift_allocObject(v3, 64LL, 7LL);
*(_OWORD *)(v4 + 16) = xmmword_100005740;
*(_QWORD *)(v4 + 56) = &type metadata for String;
*(_QWORD *)(v4 + 32) = 0x746375727453794DLL;
*(_QWORD *)(v4 + 40) = 0xEF3A65756C617620LL;
print(_:separator:terminator:)(v4, 32LL);
objc_release(v2);
swift_release(v4);
}
按R将hex转char:
*(_QWORD *)(v4 + 32) = 'tcurtSyM';
*(_QWORD *)(v4 + 40) = '\xEF:eulav ';
字符串长一些:
print("MyStruct value:wawefwaefawefawefawefawefawefawefawefawefawefawefawefawefawefawefawefawefawefawefawefaweofihawioehufi")
void __cdecl -[ViewController viewDidLoad](_TtC11hello_swift14ViewController *self, SEL a2)
{
id v2; // x19
__int64 v3; // x0
__int64 v4; // x20
objc_super v5; // [xsp+0h] [xbp-20h] BYREF
v5.receiver = self;
v5.super_class = (Class)type metadata accessor for ViewController(self, a2);
v2 = objc_retain(v5.receiver);
-[ViewController viewDidLoad](&v5, "viewDidLoad");
v3 = __swift_instantiateConcreteTypeFromMangledName(&demangling cache variable for type metadata for _ContiguousArrayStorage<Any>);
v4 = swift_allocObject(v3, 64LL, 7LL);
*(_OWORD *)(v4 + 16) = xmmword_1000056C0;
*(_QWORD *)(v4 + 56) = &type metadata for String;
*(_QWORD *)(v4 + 32) = 0xD000000000000074LL;
*(_QWORD *)(v4 + 40) = 0x8000000100005780LL;
print(_:separator:terminator:)(v4, 32LL);
objc_release(v2);
swift_release(v4);
}
__const:00000001000056C0 xmmword_1000056C0 DCB 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0
__cstring:0000000100005760 ; ===========================================================================
__cstring:0000000100005760
__cstring:0000000100005760 ; Segment type: Pure data
__cstring:0000000100005760 AREA __cstring, DATA, READONLY, ALIGN=4
__cstring:0000000100005760 ; ORG 0x100005760
__cstring:0000000100005760 aTtc11helloSwif DCB "_TtC11hello_swift14ViewController",0
__cstring:0000000100005760 ; DATA XREF: __objc_const:ViewController↓o
__cstring:0000000100005760 ; __objc_data:ViewController↓o
__cstring:0000000100005782 aV1608 DCB "v16@0:8",0 ; DATA XREF: __objc_methlist:0000000100005650↑o
__cstring:0000000100005782 ; __objc_methlist:0000000100005664↑o ...
__cstring:000000010000578A a32081624 DCB "@32@0:8@16@24",0 ; DATA XREF: __objc_methlist:0000000100005670↑o
__cstring:000000010000578A ; __objc_methlist:00000001000056AC↑o
__cstring:0000000100005798 DCB 0
__cstring:0000000100005799 ALIGN 4
__cstring:000000010000579C DCB 0
__cstring:000000010000579D ALIGN 0x20
__cstring:00000001000057A0 aMystructValueW DCB "MyStruct value:wawefwaefawefawefawefawefawefawefawefawefawefawef"
__cstring:00000001000057A0 ; DATA XREF: -[ViewController viewDidLoad]+78↑o
__cstring:00000001000057E0 DCB "awefawefawefawefawefawefawefawefawefaweofihawioehufi",0
__cstring:0000000100005815 ALIGN 8
__cstring:0000000100005818 DCB 0
__cstring:0000000100005819 ALIGN 4
__cstring:000000010000581C DCB 0
__cstring:000000010000581D