有些时候我开始学习汇编,而且我经常在程序中使用面向对象的概念。我开始这样做了一次我很好地理解了装配,以便想象对象在机器代码中如何工作,但我不知道我的方法是否正确。
以下是我的方法: 1.使用汇编程序常量指令(此处为gas x86-64)定义表示类的每个成员的相对地址的常量。
.equ HUMAN_ID,0
.equ HUMAN_AGE,8
.equ HUMAN_NAME,16
.equ HUMAN_SIZE,24 # Size of object is 24 bytes
2。我为对象分配内存并将地址保存在指针内存位置。
movq $HUMAIN_SIZE,%rcx
call malloc # I avoid getting into systems specifics so I use C library
movq %rax,pointer
3。要访问它,我取消引用指针并使用成员的相对地址来访问它。
movq pointer,%rbx
movq $25,HUMAN_AGE(%rbx) # Set age to 25
movq HUMAN_AGE(%rbx),%rax # Get age into rax
这是对的吗?你有什么建议吗?谢谢