Eliot Miranda uploaded a new version of Cog to project VM Maker: http://source.squeak.org/VMMaker/Cog-eem.376.mcz ==================== Summary ==================== Name: Cog-eem.376 Author: eem Time: 15 December 2019, 12:23:00.268258 pm UUID: 330b467e-b08a-42c1-a2f8-1097f3598342 Ancestors: Cog-eem.375 We don't need no steenkin' execution simulation category... =============== Diff against Cog-eem.375 =============== Item was changed: + ----- Method: GdbARMAlien>>simulateCallOf:nextpc:memory: (in category 'execution') ----- - ----- Method: GdbARMAlien>>simulateCallOf:nextpc:memory: (in category 'execution simulation') ----- simulateCallOf: address nextpc: nextpc memory: aMemory "Simulate a frame-building call of address. Build a frame since a) this is used for calls into the run-time which are unlikely to be leaf-calls" "This method builds a stack frame as expected by the simulator, not as defined by ARM aapcs-abi. In ARM aapcs, every method can define for itself, wether it wants to push lr (nextpc), and wether it uses a frame pointer. The standard never mentions a fp. It merely defines r4-r11 to be callee-saved." self pushWord: self lr in: aMemory. self pushWord: self fp in: aMemory. self fp: self sp. PostBuildStackDelta ~= 0 ifTrue: [self sp: self sp - PostBuildStackDelta]. "In order to satisfy the CStackAlignment check by cogit, which is only valid on IA32 platforms." self pc: address! Item was changed: + ----- Method: GdbARMAlien>>simulateJumpCallOf:memory: (in category 'execution') ----- - ----- Method: GdbARMAlien>>simulateJumpCallOf:memory: (in category 'execution simulation') ----- simulateJumpCallOf: address memory: aMemory "Simulate a frame-building jump of address. Build a frame since a) this is used for calls into the run-time which are unlikely to be leaf-calls" "This method builds a stack frame as expected by the simulator, not as defined by ARM aapcs-abi. In ARM aapcs, every method can define for itself, wether it wants to push lr (nextpc), and wether it uses a frame pointer. The standard never mentions a fp. It merely defines r4-r11 to be callee-saved." self assert: self sp \\ 8 = 0. "This check ensures, that we conform with ARM abi. Before doing anything to the stack, we ensure 2-word alignment." self pushWord: self lr in: aMemory. self pushWord: self fp in: aMemory. self fp: self sp. PostBuildStackDelta ~= 0 ifTrue: [self sp: self sp - PostBuildStackDelta]. "In order to satisfy the CStackAlignment check by cogit, which is only valid on IA32 platforms." self pc: address! Item was changed: + ----- Method: GdbARMAlien>>simulateLeafCallOf:nextpc:memory: (in category 'execution') ----- - ----- Method: GdbARMAlien>>simulateLeafCallOf:nextpc:memory: (in category 'execution simulation') ----- simulateLeafCallOf: address nextpc: nextpc memory: aMemory self lr: nextpc. self pc: address! Item was changed: + ----- Method: GdbARMAlien>>simulateLeafReturnIn: (in category 'execution') ----- - ----- Method: GdbARMAlien>>simulateLeafReturnIn: (in category 'execution simulation') ----- simulateLeafReturnIn: aMemory self pc: self lr! Item was changed: + ----- Method: GdbARMAlien>>simulateReturnIn: (in category 'execution') ----- - ----- Method: GdbARMAlien>>simulateReturnIn: (in category 'execution simulation') ----- simulateReturnIn: aMemory PostBuildStackDelta ~= 0 ifTrue: [self sp: self sp + PostBuildStackDelta]. self fp: (self popWordIn: aMemory). "According to tpr, most C compilers implement return by simply popping into the pc, rather than popping through the link register." self pc: (self popWordIn: aMemory)! |
Free forum by Nabble | Edit this page |