I develop the code with x86 gcc.
The C code:
#include <stdio.h>
void test() {
int i;
int array[3] = {0};
for (i = 0; i < 3; i++)
printf("array[%d] = %d\n", i, array[i]);
}
int main(int argc, const char *argv[]) {
test();
return 0;
}
The assembly code:
.file "init.c"
.section .rodata
.LC0:
.string "array[%d] = %d\n"
.text
.globl test
.type test, @function
test:
pushl %ebp
movl %esp, %ebp
subl $40, %esp
# Code for array initialization
movl $0, -24(%ebp)
movl $0, -20(%ebp)
movl $0, -16(%ebp)
movl $0, -12(%ebp)
jmp .L2
.L3:
movl -12(%ebp), %eax
movl -24(%ebp,%eax,4), %edx
movl $.LC0, %eax
movl %edx, 8(%esp)
movl -12(%ebp), %edx
movl %edx, 4(%esp)
movl %eax, (%esp)
call printf
addl $1, -12(%ebp)
.L2:
cmpl $2, -12(%ebp)
jle .L3
leave
ret
.size test, .-test
.globl main
.type main, @function
main:
pushl %ebp
movl %esp, %ebp
andl $-16, %esp
call test
movl $0, %eax
movl %ebp, %esp
popl %ebp
ret
.size main, .-main
.ident "GCC: (Ubuntu 4.4.3-4ubuntu5.1) 4.4.3"
.section .note.GNU-stack,"",@progbits
分享到:
相关推荐
栈(stack)是限制插入和删除只能在一个位置上进行的表,该位置是表的末端,叫做栈的顶(top)。对栈的基本操作有Push(进栈)和Pop(出栈),前者相当于插入,后者则是删除最后插入的元素。 原文:...
EtherCAT(Ethernet for Control Automation Technology)是一种实时工业以太网通信协议,被广泛应用于自动化领域。EtherCAT从站栈(Slave Stack)是实现EtherCAT通信的核心软件组件,它负责处理来自主站的数据交换...
The EtherCAT Slave Stack Code (SSC) is an example source code in ANSI C supporting both the µC and the SPI interface. The code serves as a development base for implementation of EtherCAT in devices ...
EtherCAT(Ethernet for Control Automation Technology)是一种实时工业以太网通信协议,专为自动化控制设计。在 EtherCAT 网络中,设备分为主站(Master)和从站(Slave)。主站负责协调整个网络的数据交换,而从...
EtherCAT(Ethernet for Control Automation Technology)是一种实时工业以太网通信协议,被广泛应用于自动化领域。EtherCAT 从机栈(Slave Stack)是实现EtherCAT通信的核心组件,它负责处理来自主站的数据交换和...
Code Review Stack Exchange
EtherCAT(Ethernet for Control Automation Technology)是一种实时工业以太网通信协议,被广泛应用于自动化领域。在 EtherCAT 系统中,"从站"是指连接到主站的设备,它们通常执行控制系统的具体任务,如数据采集或...
【描述】"stack-code stack-code stack-code stack-code stack-code stack-code"虽然重复,但似乎没有提供具体的信息。在正常情况下,描述会包含对压缩包具体内容的简短说明,比如包含的项目、教程、示例代码或者...
EtherCAT从站协议栈(Slave Stack Code, SSC)是实现EtherCAT技术的关键部分,它允许设备作为EtherCAT网络中的从站节点进行通信。在这个场景中,BECKHOFF作为知名的自动化技术供应商,提供了名为"SSC V5.12 (Tool ...
stack_array.exe
Beckhoff Automation的EtherCAT Slave Stack Code(SSC)是ANSI C中的示例源代码,支持μC和SPI接口。 该代码作为在具有自己的处理器的设备中实现EtherCAT的开发基础。 “对象字典工具”(OD-Tool)已集成到SSC OD...
Beckhoff公司开发从站节点软硬件必备的配置工作和生成驱动用XML文件的工具。
在汇编语言的学习中,"STACK1_SEGMENT_STACK.rar_STACK1 SEGMENT_stack segment stack"这个标题提到了两个关键概念:栈段(Stack Segment)和栈(Stack)。栈在计算机科学中扮演着至关重要的角色,尤其是在汇编语言...
本文档是关于Beckhoff公司EtherCAT Slave Stack Code(ET9300)的《应用说明》,文档版本为1.8,发布日期为2017年11月14日。该文档提供了有关EtherCAT技术的详细信息,包括其专利情况、版权声明、免责声明以及文档...
EtherCat Slave Code TOOL(SSC) 5.12版本,最新版, 实测可用! 实测可用! 实测可用! 实测可用!
"应用笔记 ET9300 (EtherCAT Slave 栈代码)" 应用笔记 ET9300 是一份关于 EtherCAT Slave 栈代码的应用笔记,由 Beckhoff Automation GmbH 发布。该文档涵盖了 EtherCAT Slave 栈代码的实现细节,包括硬件访问、...
顺序栈需要实现各项业务功能:创建栈、销毁栈、判断栈是否为空、判断栈是否为满、入栈、出栈、查看栈顶元素。
java java_leetcode题解之Implement Stack Using Array.java