我一直在尝试熟悉mac上的汇编,从我所知道的,文档非常稀疏,大多数关于这个主题的书都是针对windows或linux的.我以为我可以很容易地从linux转换到mac,但这个(linux)
.file "simple.c"
.text
.globl simple
.type simple, @function
simple:
pushl %ebp
movl %esp, %ebp
movl 8(%ebp), %edx
movl 12(%ebp), %eax
addl (%edx), %eax
movl %eax, (%edx)
popl %ebp
ret
.size simple, .-simple
.ident "GCC: (Ubuntu 4.3.2-1ubuntu11) 4.3.2"
.section .note.GNU-stack,"",@progbits
Run Code Online (Sandbox Code Playgroud)
看起来与此非常不同(mac)
.section __TEXT,__text,regular,pure_instructions
.globl _simple
.align 4, 0x90
_simple: ## @simple
.cfi_startproc
## BB#0:
pushq %rbp
Ltmp2:
.cfi_def_cfa_offset 16
Ltmp3:
.cfi_offset %rbp, -16
movq %rsp, %rbp
Ltmp4:
.cfi_def_cfa_register %rbp
addl (%rdi), %esi
movl %esi, (%rdi)
movl %esi, %eax
popq %rbp …Run Code Online (Sandbox Code Playgroud) 我以前在SDL中使用过OpenGL,但我刚开始学习QT.在QT中,使用OpenGL证明有点痛苦.我有以下两个文件:
main.cpp中
#include <stdio.h>
#include <QApplication>
#include "glwidget.hpp"
#include <QGLFormat>
int main(int args, char *argv[]) {
QApplication app(args, argv);
GLWidget openGLWidget;
openGLWidget.show();
return app.exec();
}
Run Code Online (Sandbox Code Playgroud)
glwidget.hpp
#include <GL/glew.h>
#include <QGLWidget>
class GLWidget : public QGLWidget {
protected:
void initializeGL();
void paintGL();
};
void GLWidget::initializeGL() {
if(glewInit() != GLEW_OK) {
fprintf(stderr, "GLEW failed to initialize.");
}
}
void GLWidget::paintGL() {
glClearColor(1, 0, 0, 1);
glClear(GL_COLOR_BUFFER_BIT);
QGLWidget::swapBuffers();
}
Run Code Online (Sandbox Code Playgroud)
helloworld.pro
TEMPLATE = app
INCLUDEPATH += .
LIBS += -lGL -lGLEW
# Input
SOURCES …Run Code Online (Sandbox Code Playgroud) 我在我的mac os x上使用C++和SDL Cocoa和Foundation框架.我收到以下错误
Undefined symbols for architecture x86_64:
"_SDL_main", referenced from:
-[SDLMain applicationDidFinishLaunching:] in SDLMain.o
ld: symbol(s) not found for architecture x86_64
Run Code Online (Sandbox Code Playgroud)
当我运行以下代码时
#import <Foundation/Foundation.h>
#import <SDL/SDL.h>
#include "SDLMain.h"
int main(int argc, const char * argv[])
{
SDL_Init(SDL_INIT_EVERYTHING);
SDL_SetVideoMode(640,480,32,SDL_DOUBLEBUF);
SDL_Event event;
bool isRunning = true;
while(SDL_PollEvent(&event)){
if(event.type == SDL_QUIT){
isRunning=false;
}
}
SDL_Quit();
return 0;
}
Run Code Online (Sandbox Code Playgroud)
我不知道出了什么问题,虽然看起来当我进入SDLMain.m文件并注释掉这行代码
status = SDL_main (gArgc, gArgv);
Run Code Online (Sandbox Code Playgroud)
程序编译没有问题.但是,它不起作用.没有窗口像它应该的那样打开.有任何想法吗?
如果我在C中定义一个变量(即unsigned short int n = 5),那么该值将以二进制形式存储在用户RAM的某处(在这种情况下,它看起来像0000 0000 0000 0101).存储该值的位置具有也是二进制的地址.(即,值5可以存储在例如0010处,这意味着它在RAM中使用0010和0011,因为它使用2个字节).变量n的名称表示存储该值的内存地址.存储的内存地址在哪里?那会不会占用更多的公羊?如果确实如此,那么该地址也不必有地址吗?
我一直在互联网上搜索大约两天,试图了解网络套接字是如何工作的,我在Javascript和PHP方面相对较新,看到我在两三个月前开始.
我对Http协议是什么以及如何与我正在阅读的服务器执行"握手"非常困惑.所以不幸的是,我很难提出比标题中更具体的问题.
但是,甚至比标题中的问题答案还要多,我真的很想要一个能够以彻底的方式教我网络套接字的资源,比如书籍或在线教程.
任何帮助表示赞赏,谢谢.
我刚刚开始使用GCC编译器来学习汇编我的代码.不幸的是,如果你是初学者,有非常有限的资源来学习如何做到这一点.我终于设法找到了一些简单的示例代码,我可以开始说清楚了,我得到它来组装并正确运行.这是代码:
.text # start of code indicator.
.globl _main # make the main function visible to the outside.
_main: # actually label this spot as the start of our main function.
push %rbp # save the base pointer to the stack.
mov %rsp, %rbp # put the previous stack pointer into the base pointer.
subl $8, %esp # Balance the stack onto a 16-byte boundary.
movl $0, %eax # Stuff 0 into EAX, which is where result values go.
leave …Run Code Online (Sandbox Code Playgroud) 我不知道如何用简洁的方式来表达这个问题的标题。我发现了一些相关的问题,例如这个,但似乎没有一个能明确回答我提出的问题。
但基本上我要问的是:
考虑以下代码
static <A, B> Class<? extends A> getLeftClass(Pair<A, B> tuple) {
A left = tuple.getLeft();
return left.getClass();
}
Run Code Online (Sandbox Code Playgroud)
按原样,此代码无法编译。编译失败并出现错误
Type mismatch: cannot convert from Class<capture#20-of ? extends Object> to Class<? extends A>
我认为这本质上是因为getClass返回一个类型,Class<? extends Object>但编译器期望Class<? extends A>.
一种解决方案是将类转换如下:
static <A, B> Class<? extends A> getLeftClass(Pair<A, B> tuple) {
A left = tuple.getLeft();
return (Class<? extends A>) left.getClass();
}
Run Code Online (Sandbox Code Playgroud)
这编译。但是,由于未经检查的强制转换,会出现警告。
我的问题是,警告是否合理?有正当理由不这样做吗?或者这只是编译器无法验证它是否正确的情况,但只要tuple.getLeft()它确实是 的实例,它就会始终工作A?
顺便说一下,这个Pair类是 …
这应该在我的项目目录中创建一个名为"tuna.txt"的文件.当我运行它时,它成功编译,但是没有创建文件.我在使用xcode的mac上.我已经在我的计算机上搜索了可能已经创建的其他地方,但似乎文件根本就没有创建.关于它为什么不起作用的任何想法?
#include <iostream>
#include <fstream>
using namespace std;
int main(void){
ofstream file;
file.open("tuna.txt");
file << "I love tuna and tuna loves me!\n";
file.close();
return 0;
}
Run Code Online (Sandbox Code Playgroud) 似乎在Xcode 4中,不再有办法创建一个不限于使用C或C++的命令行的应用程序.我想这样做,但Glut似乎是可用于与C++和OpenGL一起工作的mac的唯一框架之一,但是gluts功能开始停止在现代操作系统上工作.还有其他替代方案可以让我在Mac上使用C++或C进行软件开发吗?它不必限于使用xcode或opengl.
在xiki for sublime中我运行这一行
$cd /Users/my_name
Run Code Online (Sandbox Code Playgroud)
没有错误或任何出现.但是当我运行此命令时
$pwd
Run Code Online (Sandbox Code Playgroud)
这是我得到的输出
/Users/my_name/Library/Application Support/Sublime Text 2/Packages
Run Code Online (Sandbox Code Playgroud)
它似乎应该在我的主目录中.为什么这不起作用?
我正在编写一个脚本来删除目录中的所有文件以进行练习.我在我的变量周围使用引号,但我仍然收到以下错误:
/usr/local/bin/deleteall: line 6: [: too many arguments
/usr/local/bin/deleteall: line 11: [: too many arguments
Run Code Online (Sandbox Code Playgroud)
这是我的代码:
#!/bin/bash
#Deletes all files in the current directory
read -p "You are about to delete all files in $(pwd). Are you sure you want to do this? y/n" yn
echo $yn
if [ [ "$yn" = "y" ] -o [ "$yn" = "Y" ] ] ; then
for i in `ls`; do
rm $i
done
exit;
elif [ [ "$yn" = "n" ] -o …Run Code Online (Sandbox Code Playgroud) 考虑以下示例:
Definition cast {A : Set} (B : Set) (prf : A = B) (x : A) : B.
rewrite prf in x.
refine x.
Defined.
Lemma castLemma0 {A : Set} : forall (x : A) prf, cast A prf x = x.
Proof.
intros.
compute.
???
Run Code Online (Sandbox Code Playgroud)
计算步骤之后,我们留下以下上下文和子目标
A : Set
x : A
prf : A = A
______________________________________(1/1)
match prf in (_ = y) return y with
| eq_refl => x
end = x
Run Code Online (Sandbox Code Playgroud)
显然,左侧和右侧是相等的。但我不知道如何摆脱左侧烦人的“匹配”子句。特别是,尝试破坏 prf 会产生以下错误
Abstracting …Run Code Online (Sandbox Code Playgroud) macos ×5
c++ ×4
xcode ×3
assembly ×2
c ×2
gcc ×2
opengl ×2
x86-64 ×2
bash ×1
binary ×1
casting ×1
cd ×1
cocoa ×1
command-line ×1
coq ×1
file ×1
generics ×1
java ×1
javascript ×1
memory ×1
php ×1
qglwidget ×1
qt ×1
ram ×1
sdl ×1
server-side ×1
shell ×1
stack ×1
sublimetext2 ×1
type-erasure ×1
ubuntu ×1
unix ×1
websocket ×1
x86 ×1
xiki ×1