| /* Copyright 2023-2025 Free Software Foundation, Inc. |
| |
| This program is free software; you can redistribute it and/or modify |
| it under the terms of the GNU General Public License as published by |
| the Free Software Foundation; either version 3 of the License, or |
| (at your option) any later version. |
| |
| This program is distributed in the hope that it will be useful, |
| but WITHOUT ANY WARRANTY; without even the implied warranty of |
| MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
| GNU General Public License for more details. |
| |
| You should have received a copy of the GNU General Public License |
| along with this program. If not, see <http://www.gnu.org/licenses/>. */ |
| |
| void |
| __attribute__((used)) |
| trivial (void) |
| { |
| asm ("trivial_label: .global trivial_label"); /* trivial function */ |
| } |
| |
| char global; |
| |
| void |
| watch (void) |
| { /* watch start */ |
| asm ("watch_label: .global watch_label"); |
| asm ("mov $0x0, %rax"); |
| int local = 0; /* watch prologue */ |
| |
| asm ("watch_start: .global watch_start"); |
| asm ("mov $0x1, %rax"); |
| local = 1; /* watch assign */ |
| asm ("watch_reassign: .global watch_reassign"); |
| asm ("mov $0x2, %rax"); |
| local = 2; /* watch reassign */ |
| asm ("watch_end: .global watch_end"); /* watch end */ |
| } |
| |
| int |
| main (void) |
| { /* main prologue */ |
| asm ("main_label: .global main_label"); |
| global = 0; |
| asm ("main_fun_call: .global main_fun_call"); |
| watch (); /* main function call */ |
| asm ("main_epilogue: .global main_epilogue"); |
| global = 10; |
| return 0; /* main end */ |
| } |