我的面向对象组件是对的吗?

时间:2016-02-09 14:26:16

标签: object assembly x86-64 gas

有些时候我开始学习汇编,而且我经常在程序中使用面向对象的概念。我开始这样做了一次我很好地理解了装配,以便想象对象在机器代码中如何工作,但我不知道我的方法是否正确。

以下是我的方法: 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

这是对的吗?你有什么建议吗?谢谢

0 个答案:

没有答案